Complete platform management workflows
This commit is contained in:
+161
-2
@@ -63,6 +63,55 @@ type ArtifactRepository interface {
|
||||
Update(domain.Artifact) error
|
||||
}
|
||||
|
||||
type RuntimeBindingRepository interface {
|
||||
Create(domain.RuntimeBinding) error
|
||||
Get(id string) (domain.RuntimeBinding, error)
|
||||
List(domain.RuntimeBindingFilter) ([]domain.RuntimeBinding, error)
|
||||
Update(domain.RuntimeBinding) error
|
||||
}
|
||||
|
||||
type EncryptedComponentKeyRepository interface {
|
||||
Create(domain.EncryptedComponentKey) error
|
||||
Get(id string) (domain.EncryptedComponentKey, error)
|
||||
List(domain.EncryptedComponentKeyFilter) ([]domain.EncryptedComponentKey, error)
|
||||
Update(domain.EncryptedComponentKey) error
|
||||
}
|
||||
|
||||
type RunDistributionRepository interface {
|
||||
Create(domain.RunDistribution) error
|
||||
Get(id string) (domain.RunDistribution, error)
|
||||
List(domain.RunDistributionFilter) ([]domain.RunDistribution, error)
|
||||
Update(domain.RunDistribution) error
|
||||
}
|
||||
|
||||
type ClientManagerDistributionRepository interface {
|
||||
Create(domain.ClientManagerDistribution) error
|
||||
Get(id string) (domain.ClientManagerDistribution, error)
|
||||
List(domain.ClientManagerDistributionFilter) ([]domain.ClientManagerDistribution, error)
|
||||
Update(domain.ClientManagerDistribution) error
|
||||
}
|
||||
|
||||
type DependencyStatusRepository interface {
|
||||
Create(domain.DependencyStatus) error
|
||||
Get(id string) (domain.DependencyStatus, error)
|
||||
List(domain.DependencyStatusFilter) ([]domain.DependencyStatus, error)
|
||||
Update(domain.DependencyStatus) error
|
||||
}
|
||||
|
||||
type ClientManagerBuildJobRepository interface {
|
||||
Create(domain.ClientManagerBuildJob) error
|
||||
Get(id string) (domain.ClientManagerBuildJob, error)
|
||||
List(domain.ClientManagerBuildJobFilter) ([]domain.ClientManagerBuildJob, error)
|
||||
Update(domain.ClientManagerBuildJob) error
|
||||
}
|
||||
|
||||
type RunUpdateJobRepository interface {
|
||||
Create(domain.RunUpdateJob) error
|
||||
Get(id string) (domain.RunUpdateJob, error)
|
||||
List(domain.RunUpdateJobFilter) ([]domain.RunUpdateJob, error)
|
||||
Update(domain.RunUpdateJob) error
|
||||
}
|
||||
|
||||
type LogStreamRepository interface {
|
||||
Create(domain.LogStream) error
|
||||
Get(id string) (domain.LogStream, error)
|
||||
@@ -85,6 +134,13 @@ type Store interface {
|
||||
RunEndpoints() RunEndpointRepository
|
||||
Jobs() JobRepository
|
||||
Artifacts() ArtifactRepository
|
||||
RuntimeBindings() RuntimeBindingRepository
|
||||
EncryptedComponentKeys() EncryptedComponentKeyRepository
|
||||
RunDistributions() RunDistributionRepository
|
||||
ClientManagerDistributions() ClientManagerDistributionRepository
|
||||
DependencyStatuses() DependencyStatusRepository
|
||||
ClientManagerBuildJobs() ClientManagerBuildJobRepository
|
||||
RunUpdateJobs() RunUpdateJobRepository
|
||||
LogStreams() LogStreamRepository
|
||||
AuditEvents() AuditEventRepository
|
||||
}
|
||||
@@ -97,6 +153,13 @@ type MemoryStore struct {
|
||||
runEndpoints *memoryRepository[domain.RunEndpoint, domain.RunEndpointFilter]
|
||||
jobs *memoryJobRepository
|
||||
artifacts *memoryRepository[domain.Artifact, domain.ArtifactFilter]
|
||||
runtimeBindings *memoryRepository[domain.RuntimeBinding, domain.RuntimeBindingFilter]
|
||||
componentKeys *memoryRepository[domain.EncryptedComponentKey, domain.EncryptedComponentKeyFilter]
|
||||
runDists *memoryRepository[domain.RunDistribution, domain.RunDistributionFilter]
|
||||
clientDists *memoryRepository[domain.ClientManagerDistribution, domain.ClientManagerDistributionFilter]
|
||||
dependencies *memoryRepository[domain.DependencyStatus, domain.DependencyStatusFilter]
|
||||
buildJobs *memoryRepository[domain.ClientManagerBuildJob, domain.ClientManagerBuildJobFilter]
|
||||
updateJobs *memoryRepository[domain.RunUpdateJob, domain.RunUpdateJobFilter]
|
||||
logStreams *memoryRepository[domain.LogStream, domain.LogStreamFilter]
|
||||
auditEvents *memoryRepository[domain.AuditEvent, domain.AuditEventFilter]
|
||||
}
|
||||
@@ -134,6 +197,41 @@ func NewMemoryStore() *MemoryStore {
|
||||
domain.CopyArtifact,
|
||||
matchArtifact,
|
||||
),
|
||||
runtimeBindings: newMemoryRepository(
|
||||
func(binding domain.RuntimeBinding) string { return binding.ID },
|
||||
domain.CopyRuntimeBinding,
|
||||
matchRuntimeBinding,
|
||||
),
|
||||
componentKeys: newMemoryRepository(
|
||||
func(key domain.EncryptedComponentKey) string { return key.ID },
|
||||
domain.CopyEncryptedComponentKey,
|
||||
matchEncryptedComponentKey,
|
||||
),
|
||||
runDists: newMemoryRepository(
|
||||
func(distribution domain.RunDistribution) string { return distribution.ID },
|
||||
domain.CopyRunDistribution,
|
||||
matchRunDistribution,
|
||||
),
|
||||
clientDists: newMemoryRepository(
|
||||
func(distribution domain.ClientManagerDistribution) string { return distribution.ID },
|
||||
domain.CopyClientManagerDistribution,
|
||||
matchClientManagerDistribution,
|
||||
),
|
||||
dependencies: newMemoryRepository(
|
||||
func(status domain.DependencyStatus) string { return status.ID },
|
||||
domain.CopyDependencyStatus,
|
||||
matchDependencyStatus,
|
||||
),
|
||||
buildJobs: newMemoryRepository(
|
||||
func(job domain.ClientManagerBuildJob) string { return job.ID },
|
||||
domain.CopyClientManagerBuildJob,
|
||||
matchClientManagerBuildJob,
|
||||
),
|
||||
updateJobs: newMemoryRepository(
|
||||
func(job domain.RunUpdateJob) string { return job.ID },
|
||||
domain.CopyRunUpdateJob,
|
||||
matchRunUpdateJob,
|
||||
),
|
||||
logStreams: newMemoryRepository(
|
||||
func(stream domain.LogStream) string { return stream.ID },
|
||||
domain.CopyLogStream,
|
||||
@@ -154,8 +252,21 @@ func (store *MemoryStore) ServerInstances() ServerInstanceRepository { return st
|
||||
func (store *MemoryStore) RunEndpoints() RunEndpointRepository { return store.runEndpoints }
|
||||
func (store *MemoryStore) Jobs() JobRepository { return store.jobs }
|
||||
func (store *MemoryStore) Artifacts() ArtifactRepository { return store.artifacts }
|
||||
func (store *MemoryStore) LogStreams() LogStreamRepository { return store.logStreams }
|
||||
func (store *MemoryStore) AuditEvents() AuditEventRepository { return store.auditEvents }
|
||||
func (store *MemoryStore) RuntimeBindings() RuntimeBindingRepository { return store.runtimeBindings }
|
||||
func (store *MemoryStore) EncryptedComponentKeys() EncryptedComponentKeyRepository {
|
||||
return store.componentKeys
|
||||
}
|
||||
func (store *MemoryStore) RunDistributions() RunDistributionRepository { return store.runDists }
|
||||
func (store *MemoryStore) ClientManagerDistributions() ClientManagerDistributionRepository {
|
||||
return store.clientDists
|
||||
}
|
||||
func (store *MemoryStore) DependencyStatuses() DependencyStatusRepository { return store.dependencies }
|
||||
func (store *MemoryStore) ClientManagerBuildJobs() ClientManagerBuildJobRepository {
|
||||
return store.buildJobs
|
||||
}
|
||||
func (store *MemoryStore) RunUpdateJobs() RunUpdateJobRepository { return store.updateJobs }
|
||||
func (store *MemoryStore) LogStreams() LogStreamRepository { return store.logStreams }
|
||||
func (store *MemoryStore) AuditEvents() AuditEventRepository { return store.auditEvents }
|
||||
|
||||
type memoryRepository[T any, F any] struct {
|
||||
mu sync.RWMutex
|
||||
@@ -271,6 +382,9 @@ func matchGamePlugin(plugin domain.GamePlugin, filter domain.GamePluginFilter) b
|
||||
}
|
||||
|
||||
func matchServerInstance(instance domain.ServerInstance, filter domain.ServerInstanceFilter) bool {
|
||||
if instance.State == domain.ServerInstanceStateDeleted && filter.State != domain.ServerInstanceStateDeleted {
|
||||
return false
|
||||
}
|
||||
return (filter.PluginID == "" || instance.PluginID == filter.PluginID) &&
|
||||
(filter.RunEndpointID == "" || instance.RunEndpointID == filter.RunEndpointID) &&
|
||||
(filter.State == "" || instance.State == filter.State) &&
|
||||
@@ -302,6 +416,51 @@ func matchArtifact(artifact domain.Artifact, filter domain.ArtifactFilter) bool
|
||||
(filter.State == "" || artifact.State == filter.State)
|
||||
}
|
||||
|
||||
func matchRuntimeBinding(binding domain.RuntimeBinding, filter domain.RuntimeBindingFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || binding.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProfileKey == "" || binding.ProfileKey == filter.ProfileKey) &&
|
||||
(filter.Status == "" || binding.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchEncryptedComponentKey(key domain.EncryptedComponentKey, filter domain.EncryptedComponentKeyFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || key.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ComponentKind == "" || key.ComponentKind == filter.ComponentKind) &&
|
||||
(filter.ComponentKey == "" || key.ComponentKey == filter.ComponentKey) &&
|
||||
(filter.Status == "" || key.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchRunDistribution(distribution domain.RunDistribution, filter domain.RunDistributionFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || distribution.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.TargetOS == "" || distribution.TargetOS == filter.TargetOS) &&
|
||||
(filter.TargetArch == "" || distribution.TargetArch == filter.TargetArch) &&
|
||||
(filter.Status == "" || distribution.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchClientManagerDistribution(distribution domain.ClientManagerDistribution, filter domain.ClientManagerDistributionFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || distribution.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProfileKey == "" || distribution.ProfileKey == filter.ProfileKey) &&
|
||||
(filter.TargetOS == "" || distribution.TargetOS == filter.TargetOS) &&
|
||||
(filter.TargetArch == "" || distribution.TargetArch == filter.TargetArch) &&
|
||||
(filter.Status == "" || distribution.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchDependencyStatus(status domain.DependencyStatus, filter domain.DependencyStatusFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || status.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProbeKey == "" || status.ProbeKey == filter.ProbeKey) &&
|
||||
(filter.State == "" || status.State == filter.State)
|
||||
}
|
||||
|
||||
func matchClientManagerBuildJob(job domain.ClientManagerBuildJob, filter domain.ClientManagerBuildJobFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || job.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.ProfileKey == "" || job.ProfileKey == filter.ProfileKey) &&
|
||||
(filter.Status == "" || job.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchRunUpdateJob(job domain.RunUpdateJob, filter domain.RunUpdateJobFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || job.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.Status == "" || job.Status == filter.Status)
|
||||
}
|
||||
|
||||
func matchLogStream(stream domain.LogStream, filter domain.LogStreamFilter) bool {
|
||||
return (filter.ServerInstanceID == "" || stream.ServerInstanceID == filter.ServerInstanceID) &&
|
||||
(filter.StreamKey == "" || stream.StreamKey == filter.StreamKey)
|
||||
|
||||
Reference in New Issue
Block a user