mirror of https://github.com/harness/drone.git
feat: [CDE-142]: extract gitspace find to its own svc (#2251)
* feat: [CDE-142]: extract gitspace find to its own svc * feat: [CDE-142]: extract gitspace find to its own svc * feat: [CDE-142]: extract gitspace find to its own svc * feat: [CDE-142]: extract gitspace find to its own svc * feat: [CDE-142]: extract gitspace find to its own svcunified-ui
parent
b3d9a58c5c
commit
0bbcc98b61
|
@ -27,7 +27,7 @@ import (
|
||||||
|
|
||||||
type Controller struct {
|
type Controller struct {
|
||||||
authorizer authz.Authorizer
|
authorizer authz.Authorizer
|
||||||
infraProviderSvc infraprovider.ProviderService
|
infraProviderSvc *infraprovider.Service
|
||||||
gitspaceConfigStore store.GitspaceConfigStore
|
gitspaceConfigStore store.GitspaceConfigStore
|
||||||
gitspaceInstanceStore store.GitspaceInstanceStore
|
gitspaceInstanceStore store.GitspaceInstanceStore
|
||||||
spaceStore store.SpaceStore
|
spaceStore store.SpaceStore
|
||||||
|
@ -42,7 +42,7 @@ type Controller struct {
|
||||||
func NewController(
|
func NewController(
|
||||||
tx dbtx.Transactor,
|
tx dbtx.Transactor,
|
||||||
authorizer authz.Authorizer,
|
authorizer authz.Authorizer,
|
||||||
infraProviderSvc infraprovider.ProviderService,
|
infraProviderSvc *infraprovider.Service,
|
||||||
gitspaceConfigStore store.GitspaceConfigStore,
|
gitspaceConfigStore store.GitspaceConfigStore,
|
||||||
gitspaceInstanceStore store.GitspaceInstanceStore,
|
gitspaceInstanceStore store.GitspaceInstanceStore,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
|
|
|
@ -35,7 +35,7 @@ var WireSet = wire.NewSet(
|
||||||
func ProvideController(
|
func ProvideController(
|
||||||
tx dbtx.Transactor,
|
tx dbtx.Transactor,
|
||||||
authorizer authz.Authorizer,
|
authorizer authz.Authorizer,
|
||||||
infraProviderSvc infraprovider.ProviderService,
|
infraProviderSvc *infraprovider.Service,
|
||||||
configStore store.GitspaceConfigStore,
|
configStore store.GitspaceConfigStore,
|
||||||
instanceStore store.GitspaceInstanceStore,
|
instanceStore store.GitspaceInstanceStore,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
|
|
|
@ -23,13 +23,13 @@ import (
|
||||||
type Controller struct {
|
type Controller struct {
|
||||||
authorizer authz.Authorizer
|
authorizer authz.Authorizer
|
||||||
spaceStore store.SpaceStore
|
spaceStore store.SpaceStore
|
||||||
infraproviderSvc infraprovider.ProviderService
|
infraproviderSvc *infraprovider.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewController(
|
func NewController(
|
||||||
authorizer authz.Authorizer,
|
authorizer authz.Authorizer,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
infraproviderSvc infraprovider.ProviderService,
|
infraproviderSvc *infraprovider.Service,
|
||||||
) *Controller {
|
) *Controller {
|
||||||
return &Controller{
|
return &Controller{
|
||||||
authorizer: authorizer,
|
authorizer: authorizer,
|
||||||
|
|
|
@ -30,7 +30,7 @@ var WireSet = wire.NewSet(
|
||||||
func ProvideController(
|
func ProvideController(
|
||||||
authorizer authz.Authorizer,
|
authorizer authz.Authorizer,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
infraproviderSvc infraprovider.ProviderService,
|
infraproviderSvc *infraprovider.Service,
|
||||||
) *Controller {
|
) *Controller {
|
||||||
return NewController(authorizer, spaceStore, infraproviderSvc)
|
return NewController(authorizer, spaceStore, infraproviderSvc)
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ import (
|
||||||
"github.com/harness/gitness/app/api/usererror"
|
"github.com/harness/gitness/app/api/usererror"
|
||||||
"github.com/harness/gitness/app/auth/authz"
|
"github.com/harness/gitness/app/auth/authz"
|
||||||
"github.com/harness/gitness/app/services/exporter"
|
"github.com/harness/gitness/app/services/exporter"
|
||||||
|
"github.com/harness/gitness/app/services/gitspace"
|
||||||
"github.com/harness/gitness/app/services/importer"
|
"github.com/harness/gitness/app/services/importer"
|
||||||
"github.com/harness/gitness/app/services/publicaccess"
|
"github.com/harness/gitness/app/services/publicaccess"
|
||||||
"github.com/harness/gitness/app/sse"
|
"github.com/harness/gitness/app/sse"
|
||||||
|
@ -61,28 +62,27 @@ func (s SpaceOutput) MarshalJSON() ([]byte, error) {
|
||||||
type Controller struct {
|
type Controller struct {
|
||||||
nestedSpacesEnabled bool
|
nestedSpacesEnabled bool
|
||||||
|
|
||||||
tx dbtx.Transactor
|
tx dbtx.Transactor
|
||||||
urlProvider url.Provider
|
urlProvider url.Provider
|
||||||
sseStreamer sse.Streamer
|
sseStreamer sse.Streamer
|
||||||
identifierCheck check.SpaceIdentifier
|
identifierCheck check.SpaceIdentifier
|
||||||
authorizer authz.Authorizer
|
authorizer authz.Authorizer
|
||||||
spacePathStore store.SpacePathStore
|
spacePathStore store.SpacePathStore
|
||||||
pipelineStore store.PipelineStore
|
pipelineStore store.PipelineStore
|
||||||
secretStore store.SecretStore
|
secretStore store.SecretStore
|
||||||
connectorStore store.ConnectorStore
|
connectorStore store.ConnectorStore
|
||||||
templateStore store.TemplateStore
|
templateStore store.TemplateStore
|
||||||
spaceStore store.SpaceStore
|
spaceStore store.SpaceStore
|
||||||
repoStore store.RepoStore
|
repoStore store.RepoStore
|
||||||
principalStore store.PrincipalStore
|
principalStore store.PrincipalStore
|
||||||
repoCtrl *repo.Controller
|
repoCtrl *repo.Controller
|
||||||
membershipStore store.MembershipStore
|
membershipStore store.MembershipStore
|
||||||
importer *importer.Repository
|
importer *importer.Repository
|
||||||
exporter *exporter.Repository
|
exporter *exporter.Repository
|
||||||
resourceLimiter limiter.ResourceLimiter
|
resourceLimiter limiter.ResourceLimiter
|
||||||
publicAccess publicaccess.Service
|
publicAccess publicaccess.Service
|
||||||
auditService audit.Service
|
auditService audit.Service
|
||||||
gitspaceConfigStore store.GitspaceConfigStore
|
gitspaceSvc *gitspace.Service
|
||||||
gitspaceInstanceStore store.GitspaceInstanceStore
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewController(config *types.Config, tx dbtx.Transactor, urlProvider url.Provider,
|
func NewController(config *types.Config, tx dbtx.Transactor, urlProvider url.Provider,
|
||||||
|
@ -92,32 +92,30 @@ func NewController(config *types.Config, tx dbtx.Transactor, urlProvider url.Pro
|
||||||
repoStore store.RepoStore, principalStore store.PrincipalStore, repoCtrl *repo.Controller,
|
repoStore store.RepoStore, principalStore store.PrincipalStore, repoCtrl *repo.Controller,
|
||||||
membershipStore store.MembershipStore, importer *importer.Repository, exporter *exporter.Repository,
|
membershipStore store.MembershipStore, importer *importer.Repository, exporter *exporter.Repository,
|
||||||
limiter limiter.ResourceLimiter, publicAccess publicaccess.Service, auditService audit.Service,
|
limiter limiter.ResourceLimiter, publicAccess publicaccess.Service, auditService audit.Service,
|
||||||
gitspaceStore store.GitspaceConfigStore,
|
gitspaceSvc *gitspace.Service,
|
||||||
gitspaceInstanceStore store.GitspaceInstanceStore,
|
|
||||||
) *Controller {
|
) *Controller {
|
||||||
return &Controller{
|
return &Controller{
|
||||||
nestedSpacesEnabled: config.NestedSpacesEnabled,
|
nestedSpacesEnabled: config.NestedSpacesEnabled,
|
||||||
tx: tx,
|
tx: tx,
|
||||||
urlProvider: urlProvider,
|
urlProvider: urlProvider,
|
||||||
sseStreamer: sseStreamer,
|
sseStreamer: sseStreamer,
|
||||||
identifierCheck: identifierCheck,
|
identifierCheck: identifierCheck,
|
||||||
authorizer: authorizer,
|
authorizer: authorizer,
|
||||||
spacePathStore: spacePathStore,
|
spacePathStore: spacePathStore,
|
||||||
pipelineStore: pipelineStore,
|
pipelineStore: pipelineStore,
|
||||||
secretStore: secretStore,
|
secretStore: secretStore,
|
||||||
connectorStore: connectorStore,
|
connectorStore: connectorStore,
|
||||||
templateStore: templateStore,
|
templateStore: templateStore,
|
||||||
spaceStore: spaceStore,
|
spaceStore: spaceStore,
|
||||||
repoStore: repoStore,
|
repoStore: repoStore,
|
||||||
principalStore: principalStore,
|
principalStore: principalStore,
|
||||||
repoCtrl: repoCtrl,
|
repoCtrl: repoCtrl,
|
||||||
membershipStore: membershipStore,
|
membershipStore: membershipStore,
|
||||||
importer: importer,
|
importer: importer,
|
||||||
exporter: exporter,
|
exporter: exporter,
|
||||||
resourceLimiter: limiter,
|
resourceLimiter: limiter,
|
||||||
publicAccess: publicAccess,
|
publicAccess: publicAccess,
|
||||||
auditService: auditService,
|
auditService: auditService,
|
||||||
gitspaceConfigStore: gitspaceStore,
|
gitspaceSvc: gitspaceSvc,
|
||||||
gitspaceInstanceStore: gitspaceInstanceStore,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,6 @@ import (
|
||||||
|
|
||||||
apiauth "github.com/harness/gitness/app/api/auth"
|
apiauth "github.com/harness/gitness/app/api/auth"
|
||||||
"github.com/harness/gitness/app/auth"
|
"github.com/harness/gitness/app/auth"
|
||||||
"github.com/harness/gitness/store/database/dbtx"
|
|
||||||
"github.com/harness/gitness/types"
|
"github.com/harness/gitness/types"
|
||||||
"github.com/harness/gitness/types/enum"
|
"github.com/harness/gitness/types/enum"
|
||||||
)
|
)
|
||||||
|
@ -39,68 +38,5 @@ func (c *Controller) ListGitspaces(
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, fmt.Errorf("failed to authorize gitspace: %w", err)
|
return nil, 0, fmt.Errorf("failed to authorize gitspace: %w", err)
|
||||||
}
|
}
|
||||||
gitspaceFilter := &types.GitspaceFilter{
|
return c.gitspaceSvc.ListGitspacesForSpace(ctx, space, session.Principal.UID, filter)
|
||||||
QueryFilter: filter,
|
|
||||||
UserID: session.Principal.UID,
|
|
||||||
SpaceIDs: []int64{space.ID},
|
|
||||||
}
|
|
||||||
var gitspaceConfigs []*types.GitspaceConfig
|
|
||||||
var count int64
|
|
||||||
err = c.tx.WithTx(ctx, func(ctx context.Context) (err error) {
|
|
||||||
gitspaceConfigs, err = c.gitspaceConfigStore.List(ctx, gitspaceFilter)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to list gitspace configs: %w", err)
|
|
||||||
}
|
|
||||||
if len(gitspaceConfigs) >= filter.Size {
|
|
||||||
count, err = c.gitspaceConfigStore.Count(ctx, gitspaceFilter)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to count gitspaces in space: %w", err)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
count = int64(len(gitspaceConfigs))
|
|
||||||
}
|
|
||||||
gitspaceInstancesMap, err := c.getLatestInstanceMap(ctx, gitspaceConfigs)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for _, gitspaceConfig := range gitspaceConfigs {
|
|
||||||
instance := gitspaceInstancesMap[gitspaceConfig.ID]
|
|
||||||
gitspaceConfig.GitspaceInstance = instance
|
|
||||||
gitspaceConfig.SpacePath = space.Path
|
|
||||||
if instance != nil {
|
|
||||||
gitspaceStateType, err := enum.GetGitspaceStateFromInstance(instance.State)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
gitspaceConfig.State = gitspaceStateType
|
|
||||||
instance.SpacePath = gitspaceConfig.SpacePath
|
|
||||||
} else {
|
|
||||||
gitspaceConfig.State = enum.GitspaceStateUninitialized
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}, dbtx.TxDefaultReadOnly)
|
|
||||||
if err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
return gitspaceConfigs, count, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Controller) getLatestInstanceMap(
|
|
||||||
ctx context.Context,
|
|
||||||
gitspaceConfigs []*types.GitspaceConfig,
|
|
||||||
) (map[int64]*types.GitspaceInstance, error) {
|
|
||||||
var gitspaceConfigIDs = make([]int64, 0)
|
|
||||||
for idx := 0; idx < len(gitspaceConfigs); idx++ {
|
|
||||||
gitspaceConfigIDs = append(gitspaceConfigIDs, gitspaceConfigs[idx].ID)
|
|
||||||
}
|
|
||||||
var gitspaceInstances, err = c.gitspaceInstanceStore.FindAllLatestByGitspaceConfigID(ctx, gitspaceConfigIDs)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
var gitspaceInstancesMap = make(map[int64]*types.GitspaceInstance)
|
|
||||||
for _, gitspaceEntry := range gitspaceInstances {
|
|
||||||
gitspaceInstancesMap[gitspaceEntry.GitSpaceConfigID] = gitspaceEntry
|
|
||||||
}
|
|
||||||
return gitspaceInstancesMap, nil
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ import (
|
||||||
"github.com/harness/gitness/app/api/controller/repo"
|
"github.com/harness/gitness/app/api/controller/repo"
|
||||||
"github.com/harness/gitness/app/auth/authz"
|
"github.com/harness/gitness/app/auth/authz"
|
||||||
"github.com/harness/gitness/app/services/exporter"
|
"github.com/harness/gitness/app/services/exporter"
|
||||||
|
"github.com/harness/gitness/app/services/gitspace"
|
||||||
"github.com/harness/gitness/app/services/importer"
|
"github.com/harness/gitness/app/services/importer"
|
||||||
"github.com/harness/gitness/app/services/publicaccess"
|
"github.com/harness/gitness/app/services/publicaccess"
|
||||||
"github.com/harness/gitness/app/sse"
|
"github.com/harness/gitness/app/sse"
|
||||||
|
@ -44,7 +45,7 @@ func ProvideController(config *types.Config, tx dbtx.Transactor, urlProvider url
|
||||||
spaceStore store.SpaceStore, repoStore store.RepoStore, principalStore store.PrincipalStore,
|
spaceStore store.SpaceStore, repoStore store.RepoStore, principalStore store.PrincipalStore,
|
||||||
repoCtrl *repo.Controller, membershipStore store.MembershipStore, importer *importer.Repository,
|
repoCtrl *repo.Controller, membershipStore store.MembershipStore, importer *importer.Repository,
|
||||||
exporter *exporter.Repository, limiter limiter.ResourceLimiter, publicAccess publicaccess.Service,
|
exporter *exporter.Repository, limiter limiter.ResourceLimiter, publicAccess publicaccess.Service,
|
||||||
auditService audit.Service, gitspaceConfigStore store.GitspaceConfigStore, instanceStore store.GitspaceInstanceStore,
|
auditService audit.Service, gitspaceService *gitspace.Service,
|
||||||
) *Controller {
|
) *Controller {
|
||||||
return NewController(config, tx, urlProvider, sseStreamer, identifierCheck, authorizer,
|
return NewController(config, tx, urlProvider, sseStreamer, identifierCheck, authorizer,
|
||||||
spacePathStore, pipelineStore, secretStore,
|
spacePathStore, pipelineStore, secretStore,
|
||||||
|
@ -52,5 +53,5 @@ func ProvideController(config *types.Config, tx dbtx.Transactor, urlProvider url
|
||||||
spaceStore, repoStore, principalStore,
|
spaceStore, repoStore, principalStore,
|
||||||
repoCtrl, membershipStore, importer,
|
repoCtrl, membershipStore, importer,
|
||||||
exporter, limiter, publicAccess,
|
exporter, limiter, publicAccess,
|
||||||
auditService, gitspaceConfigStore, instanceStore)
|
auditService, gitspaceService)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
// Copyright 2023 Harness, Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package gitspace
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/harness/gitness/app/store"
|
||||||
|
"github.com/harness/gitness/store/database/dbtx"
|
||||||
|
"github.com/harness/gitness/types"
|
||||||
|
"github.com/harness/gitness/types/enum"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewService(
|
||||||
|
tx dbtx.Transactor,
|
||||||
|
gitspaceStore store.GitspaceConfigStore,
|
||||||
|
gitspaceInstanceStore store.GitspaceInstanceStore,
|
||||||
|
spaceStore store.SpaceStore,
|
||||||
|
) *Service {
|
||||||
|
return &Service{
|
||||||
|
tx: tx,
|
||||||
|
gitspaceConfigStore: gitspaceStore,
|
||||||
|
gitspaceInstanceStore: gitspaceInstanceStore,
|
||||||
|
spaceStore: spaceStore,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Service struct {
|
||||||
|
gitspaceConfigStore store.GitspaceConfigStore
|
||||||
|
gitspaceInstanceStore store.GitspaceInstanceStore
|
||||||
|
spaceStore store.SpaceStore
|
||||||
|
tx dbtx.Transactor
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Service) ListGitspacesForSpace(
|
||||||
|
ctx context.Context,
|
||||||
|
space *types.Space,
|
||||||
|
userIdentifier string,
|
||||||
|
filter types.ListQueryFilter,
|
||||||
|
) ([]*types.GitspaceConfig, int64, error) {
|
||||||
|
gitspaceFilter := &types.GitspaceFilter{
|
||||||
|
QueryFilter: filter,
|
||||||
|
UserID: userIdentifier,
|
||||||
|
SpaceIDs: []int64{space.ID},
|
||||||
|
}
|
||||||
|
var gitspaceConfigs []*types.GitspaceConfig
|
||||||
|
var count int64
|
||||||
|
err := c.tx.WithTx(ctx, func(ctx context.Context) (err error) {
|
||||||
|
gitspaceConfigs, err = c.gitspaceConfigStore.List(ctx, gitspaceFilter)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to list gitspace configs: %w", err)
|
||||||
|
}
|
||||||
|
if len(gitspaceConfigs) >= gitspaceFilter.QueryFilter.Size {
|
||||||
|
count, err = c.gitspaceConfigStore.Count(ctx, gitspaceFilter)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to count gitspaces in space: %w", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
count = int64(len(gitspaceConfigs))
|
||||||
|
}
|
||||||
|
gitspaceInstancesMap, err := c.getLatestInstanceMap(ctx, gitspaceConfigs)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, gitspaceConfig := range gitspaceConfigs {
|
||||||
|
instance := gitspaceInstancesMap[gitspaceConfig.ID]
|
||||||
|
gitspaceConfig.GitspaceInstance = instance
|
||||||
|
gitspaceConfig.SpacePath = space.Path
|
||||||
|
if instance != nil {
|
||||||
|
gitspaceStateType, err := enum.GetGitspaceStateFromInstance(instance.State)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
gitspaceConfig.State = gitspaceStateType
|
||||||
|
instance.SpacePath = gitspaceConfig.SpacePath
|
||||||
|
} else {
|
||||||
|
gitspaceConfig.State = enum.GitspaceStateUninitialized
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}, dbtx.TxDefaultReadOnly)
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
return gitspaceConfigs, count, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Service) getLatestInstanceMap(
|
||||||
|
ctx context.Context,
|
||||||
|
gitspaceConfigs []*types.GitspaceConfig,
|
||||||
|
) (map[int64]*types.GitspaceInstance, error) {
|
||||||
|
var gitspaceConfigIDs = make([]int64, 0)
|
||||||
|
for idx := 0; idx < len(gitspaceConfigs); idx++ {
|
||||||
|
gitspaceConfigIDs = append(gitspaceConfigIDs, gitspaceConfigs[idx].ID)
|
||||||
|
}
|
||||||
|
var gitspaceInstances, err = c.gitspaceInstanceStore.FindAllLatestByGitspaceConfigID(ctx, gitspaceConfigIDs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
var gitspaceInstancesMap = make(map[int64]*types.GitspaceInstance)
|
||||||
|
for _, gitspaceEntry := range gitspaceInstances {
|
||||||
|
gitspaceInstancesMap[gitspaceEntry.GitSpaceConfigID] = gitspaceEntry
|
||||||
|
}
|
||||||
|
return gitspaceInstancesMap, nil
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
// Copyright 2023 Harness, Inc.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package gitspace
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/harness/gitness/app/store"
|
||||||
|
"github.com/harness/gitness/store/database/dbtx"
|
||||||
|
|
||||||
|
"github.com/google/wire"
|
||||||
|
)
|
||||||
|
|
||||||
|
var WireSet = wire.NewSet(
|
||||||
|
ProvideGitspace,
|
||||||
|
)
|
||||||
|
|
||||||
|
func ProvideGitspace(
|
||||||
|
tx dbtx.Transactor,
|
||||||
|
gitspaceStore store.GitspaceConfigStore,
|
||||||
|
gitspaceInstanceStore store.GitspaceInstanceStore,
|
||||||
|
spaceStore store.SpaceStore,
|
||||||
|
) *Service {
|
||||||
|
return NewService(tx, gitspaceStore, gitspaceInstanceStore, spaceStore)
|
||||||
|
}
|
|
@ -30,8 +30,8 @@ func NewService(
|
||||||
infraProviderConfigStore store.InfraProviderConfigStore,
|
infraProviderConfigStore store.InfraProviderConfigStore,
|
||||||
factory infraprovider.Factory,
|
factory infraprovider.Factory,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
) ProviderService {
|
) *Service {
|
||||||
return ProviderService{
|
return &Service{
|
||||||
tx: tx,
|
tx: tx,
|
||||||
infraProviderResourceStore: infraProviderResourceStore,
|
infraProviderResourceStore: infraProviderResourceStore,
|
||||||
infraProviderConfigStore: infraProviderConfigStore,
|
infraProviderConfigStore: infraProviderConfigStore,
|
||||||
|
@ -40,7 +40,7 @@ func NewService(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type ProviderService struct {
|
type Service struct {
|
||||||
infraProviderResourceStore store.InfraProviderResourceStore
|
infraProviderResourceStore store.InfraProviderResourceStore
|
||||||
infraProviderConfigStore store.InfraProviderConfigStore
|
infraProviderConfigStore store.InfraProviderConfigStore
|
||||||
infraProviderFactory infraprovider.Factory
|
infraProviderFactory infraprovider.Factory
|
||||||
|
@ -48,7 +48,7 @@ type ProviderService struct {
|
||||||
tx dbtx.Transactor
|
tx dbtx.Transactor
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ProviderService) Find(
|
func (c *Service) Find(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
space *types.Space,
|
space *types.Space,
|
||||||
identifier string,
|
identifier string,
|
||||||
|
@ -66,18 +66,18 @@ func (c ProviderService) Find(
|
||||||
return infraProviderConfig, nil
|
return infraProviderConfig, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ProviderService) FindResourceByIdentifier(
|
func (c *Service) FindResourceByIdentifier(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
spaceID int64,
|
spaceID int64,
|
||||||
identifier string) (*types.InfraProviderResource, error) {
|
identifier string) (*types.InfraProviderResource, error) {
|
||||||
return c.infraProviderResourceStore.FindByIdentifier(ctx, spaceID, identifier)
|
return c.infraProviderResourceStore.FindByIdentifier(ctx, spaceID, identifier)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ProviderService) FindResource(ctx context.Context, id int64) (*types.InfraProviderResource, error) {
|
func (c *Service) FindResource(ctx context.Context, id int64) (*types.InfraProviderResource, error) {
|
||||||
return c.infraProviderResourceStore.Find(ctx, id)
|
return c.infraProviderResourceStore.Find(ctx, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c ProviderService) CreateInfraProvider(
|
func (c *Service) CreateInfraProvider(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
infraProviderConfig *types.InfraProviderConfig,
|
infraProviderConfig *types.InfraProviderConfig,
|
||||||
) error {
|
) error {
|
||||||
|
|
|
@ -27,11 +27,11 @@ var WireSet = wire.NewSet(
|
||||||
)
|
)
|
||||||
|
|
||||||
func ProvideInfraProvider(
|
func ProvideInfraProvider(
|
||||||
|
tx dbtx.Transactor,
|
||||||
infraProviderResourceStore store.InfraProviderResourceStore,
|
infraProviderResourceStore store.InfraProviderResourceStore,
|
||||||
infraProviderConfigStore store.InfraProviderConfigStore,
|
infraProviderConfigStore store.InfraProviderConfigStore,
|
||||||
infraProviderFactory infraprovider.Factory,
|
infraProviderFactory infraprovider.Factory,
|
||||||
spaceStore store.SpaceStore,
|
spaceStore store.SpaceStore,
|
||||||
tx dbtx.Transactor,
|
) *Service {
|
||||||
) ProviderService {
|
|
||||||
return NewService(tx, infraProviderResourceStore, infraProviderConfigStore, infraProviderFactory, spaceStore)
|
return NewService(tx, infraProviderResourceStore, infraProviderConfigStore, infraProviderFactory, spaceStore)
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,9 @@ package services
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/harness/gitness/app/services/cleanup"
|
"github.com/harness/gitness/app/services/cleanup"
|
||||||
|
"github.com/harness/gitness/app/services/gitspace"
|
||||||
"github.com/harness/gitness/app/services/gitspaceevent"
|
"github.com/harness/gitness/app/services/gitspaceevent"
|
||||||
|
"github.com/harness/gitness/app/services/infraprovider"
|
||||||
"github.com/harness/gitness/app/services/keywordsearch"
|
"github.com/harness/gitness/app/services/keywordsearch"
|
||||||
"github.com/harness/gitness/app/services/metric"
|
"github.com/harness/gitness/app/services/metric"
|
||||||
"github.com/harness/gitness/app/services/notification"
|
"github.com/harness/gitness/app/services/notification"
|
||||||
|
@ -45,6 +47,8 @@ type Services struct {
|
||||||
Notification *notification.Service
|
Notification *notification.Service
|
||||||
Keywordsearch *keywordsearch.Service
|
Keywordsearch *keywordsearch.Service
|
||||||
GitspaceEvent *gitspaceevent.Service
|
GitspaceEvent *gitspaceevent.Service
|
||||||
|
infraProvider *infraprovider.Service
|
||||||
|
gitspace *gitspace.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
func ProvideServices(
|
func ProvideServices(
|
||||||
|
@ -59,6 +63,8 @@ func ProvideServices(
|
||||||
notificationSvc *notification.Service,
|
notificationSvc *notification.Service,
|
||||||
keywordsearchSvc *keywordsearch.Service,
|
keywordsearchSvc *keywordsearch.Service,
|
||||||
gitspaceEventSvc *gitspaceevent.Service,
|
gitspaceEventSvc *gitspaceevent.Service,
|
||||||
|
infraProviderSvc *infraprovider.Service,
|
||||||
|
gitspaceSvc *gitspace.Service,
|
||||||
) Services {
|
) Services {
|
||||||
return Services{
|
return Services{
|
||||||
Webhook: webhooksSvc,
|
Webhook: webhooksSvc,
|
||||||
|
@ -72,5 +78,7 @@ func ProvideServices(
|
||||||
Notification: notificationSvc,
|
Notification: notificationSvc,
|
||||||
Keywordsearch: keywordsearchSvc,
|
Keywordsearch: keywordsearchSvc,
|
||||||
GitspaceEvent: gitspaceEventSvc,
|
GitspaceEvent: gitspaceEventSvc,
|
||||||
|
infraProvider: infraProviderSvc,
|
||||||
|
gitspace: gitspaceSvc,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,9 +65,10 @@ import (
|
||||||
"github.com/harness/gitness/app/services/codecomments"
|
"github.com/harness/gitness/app/services/codecomments"
|
||||||
"github.com/harness/gitness/app/services/codeowners"
|
"github.com/harness/gitness/app/services/codeowners"
|
||||||
"github.com/harness/gitness/app/services/exporter"
|
"github.com/harness/gitness/app/services/exporter"
|
||||||
|
gitspaceSvc "github.com/harness/gitness/app/services/gitspace"
|
||||||
"github.com/harness/gitness/app/services/gitspaceevent"
|
"github.com/harness/gitness/app/services/gitspaceevent"
|
||||||
"github.com/harness/gitness/app/services/importer"
|
"github.com/harness/gitness/app/services/importer"
|
||||||
"github.com/harness/gitness/app/services/infraprovider"
|
infraproviderSvc "github.com/harness/gitness/app/services/infraprovider"
|
||||||
"github.com/harness/gitness/app/services/keywordsearch"
|
"github.com/harness/gitness/app/services/keywordsearch"
|
||||||
locker "github.com/harness/gitness/app/services/locker"
|
locker "github.com/harness/gitness/app/services/locker"
|
||||||
"github.com/harness/gitness/app/services/metric"
|
"github.com/harness/gitness/app/services/metric"
|
||||||
|
@ -142,7 +143,13 @@ func initSystem(ctx context.Context, config *types.Config) (*cliserver.System, e
|
||||||
system.WireSet,
|
system.WireSet,
|
||||||
authn.WireSet,
|
authn.WireSet,
|
||||||
authz.WireSet,
|
authz.WireSet,
|
||||||
|
infrastructure.WireSet,
|
||||||
|
infraproviderpkg.WireSet,
|
||||||
gitspaceevents.WireSet,
|
gitspaceevents.WireSet,
|
||||||
|
infraproviderCtrl.WireSet,
|
||||||
|
gitspaceCtrl.WireSet,
|
||||||
|
infraproviderSvc.WireSet,
|
||||||
|
gitspaceSvc.WireSet,
|
||||||
gitevents.WireSet,
|
gitevents.WireSet,
|
||||||
pullreqevents.WireSet,
|
pullreqevents.WireSet,
|
||||||
repoevents.WireSet,
|
repoevents.WireSet,
|
||||||
|
@ -211,15 +218,10 @@ func initSystem(ctx context.Context, config *types.Config) (*cliserver.System, e
|
||||||
audit.WireSet,
|
audit.WireSet,
|
||||||
ssh.WireSet,
|
ssh.WireSet,
|
||||||
publickey.WireSet,
|
publickey.WireSet,
|
||||||
infraprovider.WireSet,
|
|
||||||
migrate.WireSet,
|
migrate.WireSet,
|
||||||
gitspaceCtrl.WireSet,
|
|
||||||
infraproviderCtrl.WireSet,
|
|
||||||
infraproviderpkg.WireSet,
|
|
||||||
scm.WireSet,
|
scm.WireSet,
|
||||||
orchestrator.WireSet,
|
orchestrator.WireSet,
|
||||||
containerorchestrator.WireSet,
|
containerorchestrator.WireSet,
|
||||||
infrastructure.WireSet,
|
|
||||||
cliserver.ProvideIDEVSCodeWebConfig,
|
cliserver.ProvideIDEVSCodeWebConfig,
|
||||||
cliserver.ProvideDockerConfig,
|
cliserver.ProvideDockerConfig,
|
||||||
cliserver.ProvideGitspaceContainerOrchestratorConfig,
|
cliserver.ProvideGitspaceContainerOrchestratorConfig,
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
"github.com/harness/gitness/app/api/controller/connector"
|
"github.com/harness/gitness/app/api/controller/connector"
|
||||||
"github.com/harness/gitness/app/api/controller/execution"
|
"github.com/harness/gitness/app/api/controller/execution"
|
||||||
"github.com/harness/gitness/app/api/controller/githook"
|
"github.com/harness/gitness/app/api/controller/githook"
|
||||||
"github.com/harness/gitness/app/api/controller/gitspace"
|
gitspace2 "github.com/harness/gitness/app/api/controller/gitspace"
|
||||||
infraprovider3 "github.com/harness/gitness/app/api/controller/infraprovider"
|
infraprovider3 "github.com/harness/gitness/app/api/controller/infraprovider"
|
||||||
keywordsearch2 "github.com/harness/gitness/app/api/controller/keywordsearch"
|
keywordsearch2 "github.com/harness/gitness/app/api/controller/keywordsearch"
|
||||||
"github.com/harness/gitness/app/api/controller/limiter"
|
"github.com/harness/gitness/app/api/controller/limiter"
|
||||||
|
@ -64,6 +64,7 @@ import (
|
||||||
"github.com/harness/gitness/app/services/codecomments"
|
"github.com/harness/gitness/app/services/codecomments"
|
||||||
"github.com/harness/gitness/app/services/codeowners"
|
"github.com/harness/gitness/app/services/codeowners"
|
||||||
"github.com/harness/gitness/app/services/exporter"
|
"github.com/harness/gitness/app/services/exporter"
|
||||||
|
"github.com/harness/gitness/app/services/gitspace"
|
||||||
"github.com/harness/gitness/app/services/gitspaceevent"
|
"github.com/harness/gitness/app/services/gitspaceevent"
|
||||||
"github.com/harness/gitness/app/services/importer"
|
"github.com/harness/gitness/app/services/importer"
|
||||||
infraprovider2 "github.com/harness/gitness/app/services/infraprovider"
|
infraprovider2 "github.com/harness/gitness/app/services/infraprovider"
|
||||||
|
@ -245,7 +246,8 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
||||||
}
|
}
|
||||||
gitspaceConfigStore := database.ProvideGitspaceConfigStore(db)
|
gitspaceConfigStore := database.ProvideGitspaceConfigStore(db)
|
||||||
gitspaceInstanceStore := database.ProvideGitspaceInstanceStore(db)
|
gitspaceInstanceStore := database.ProvideGitspaceInstanceStore(db)
|
||||||
spaceController := space.ProvideController(config, transactor, provider, streamer, spaceIdentifier, authorizer, spacePathStore, pipelineStore, secretStore, connectorStore, templateStore, spaceStore, repoStore, principalStore, repoController, membershipStore, repository, exporterRepository, resourceLimiter, publicaccessService, auditService, gitspaceConfigStore, gitspaceInstanceStore)
|
gitspaceService := gitspace.ProvideGitspace(transactor, gitspaceConfigStore, gitspaceInstanceStore, spaceStore)
|
||||||
|
spaceController := space.ProvideController(config, transactor, provider, streamer, spaceIdentifier, authorizer, spacePathStore, pipelineStore, secretStore, connectorStore, templateStore, spaceStore, repoStore, principalStore, repoController, membershipStore, repository, exporterRepository, resourceLimiter, publicaccessService, auditService, gitspaceService)
|
||||||
pipelineController := pipeline.ProvideController(repoStore, triggerStore, authorizer, pipelineStore)
|
pipelineController := pipeline.ProvideController(repoStore, triggerStore, authorizer, pipelineStore)
|
||||||
secretController := secret.ProvideController(encrypter, secretStore, authorizer, spaceStore)
|
secretController := secret.ProvideController(encrypter, secretStore, authorizer, spaceStore)
|
||||||
triggerController := trigger.ProvideController(authorizer, triggerStore, pipelineStore, repoStore)
|
triggerController := trigger.ProvideController(authorizer, triggerStore, pipelineStore, repoStore)
|
||||||
|
@ -329,8 +331,8 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
||||||
dockerClientFactory := infraprovider.ProvideDockerClientFactory(dockerConfig)
|
dockerClientFactory := infraprovider.ProvideDockerClientFactory(dockerConfig)
|
||||||
dockerProvider := infraprovider.ProvideDockerProvider(dockerConfig, dockerClientFactory)
|
dockerProvider := infraprovider.ProvideDockerProvider(dockerConfig, dockerClientFactory)
|
||||||
factory := infraprovider.ProvideFactory(dockerProvider)
|
factory := infraprovider.ProvideFactory(dockerProvider)
|
||||||
providerService := infraprovider2.ProvideInfraProvider(infraProviderResourceStore, infraProviderConfigStore, factory, spaceStore, transactor)
|
infraproviderService := infraprovider2.ProvideInfraProvider(transactor, infraProviderResourceStore, infraProviderConfigStore, factory, spaceStore)
|
||||||
infraproviderController := infraprovider3.ProvideController(authorizer, spaceStore, providerService)
|
infraproviderController := infraprovider3.ProvideController(authorizer, spaceStore, infraproviderService)
|
||||||
reporter3, err := events5.ProvideReporter(eventsSystem)
|
reporter3, err := events5.ProvideReporter(eventsSystem)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -345,7 +347,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
||||||
containerOrchestrator := container.ProvideEmbeddedDockerOrchestrator(dockerClientFactory, vsCode, vsCodeWeb, containerConfig, statefulLogger)
|
containerOrchestrator := container.ProvideEmbeddedDockerOrchestrator(dockerClientFactory, vsCode, vsCodeWeb, containerConfig, statefulLogger)
|
||||||
orchestratorOrchestrator := orchestrator.ProvideOrchestrator(scmSCM, infraProviderResourceStore, infraProvisioner, containerOrchestrator, reporter3)
|
orchestratorOrchestrator := orchestrator.ProvideOrchestrator(scmSCM, infraProviderResourceStore, infraProvisioner, containerOrchestrator, reporter3)
|
||||||
gitspaceEventStore := database.ProvideGitspaceEventStore(db)
|
gitspaceEventStore := database.ProvideGitspaceEventStore(db)
|
||||||
gitspaceController := gitspace.ProvideController(transactor, authorizer, providerService, gitspaceConfigStore, gitspaceInstanceStore, spaceStore, reporter3, orchestratorOrchestrator, gitspaceEventStore, statefulLogger, scmSCM)
|
gitspaceController := gitspace2.ProvideController(transactor, authorizer, infraproviderService, gitspaceConfigStore, gitspaceInstanceStore, spaceStore, reporter3, orchestratorOrchestrator, gitspaceEventStore, statefulLogger, scmSCM)
|
||||||
migrateController := migrate.ProvideController(authorizer, principalStore)
|
migrateController := migrate.ProvideController(authorizer, principalStore)
|
||||||
apiHandler := router.ProvideAPIHandler(ctx, config, authenticator, repoController, reposettingsController, executionController, logsController, spaceController, pipelineController, secretController, triggerController, connectorController, templateController, pluginController, pullreqController, webhookController, githookController, gitInterface, serviceaccountController, controller, principalController, checkController, systemController, uploadController, keywordsearchController, infraproviderController, gitspaceController, migrateController)
|
apiHandler := router.ProvideAPIHandler(ctx, config, authenticator, repoController, reposettingsController, executionController, logsController, spaceController, pipelineController, secretController, triggerController, connectorController, templateController, pluginController, pullreqController, webhookController, githookController, gitInterface, serviceaccountController, controller, principalController, checkController, systemController, uploadController, keywordsearchController, infraproviderController, gitspaceController, migrateController)
|
||||||
gitHandler := router.ProvideGitHandler(provider, authenticator, repoController)
|
gitHandler := router.ProvideGitHandler(provider, authenticator, repoController)
|
||||||
|
@ -410,7 +412,7 @@ func initSystem(ctx context.Context, config *types.Config) (*server.System, erro
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
servicesServices := services.ProvideServices(webhookService, pullreqService, triggerService, jobScheduler, collector, sizeCalculator, repoService, cleanupService, notificationService, keywordsearchService, gitspaceeventService)
|
servicesServices := services.ProvideServices(webhookService, pullreqService, triggerService, jobScheduler, collector, sizeCalculator, repoService, cleanupService, notificationService, keywordsearchService, gitspaceeventService, infraproviderService, gitspaceService)
|
||||||
serverSystem := server.NewSystem(bootstrapBootstrap, serverServer, sshServer, poller, resolverManager, servicesServices)
|
serverSystem := server.NewSystem(bootstrapBootstrap, serverServer, sshServer, poller, resolverManager, servicesServices)
|
||||||
return serverSystem, nil
|
return serverSystem, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue