1package cli
2
3import (
4 "context"
5
6 "github.com/bnema/gordon/internal/adapters/dto"
7 "github.com/bnema/gordon/internal/adapters/in/cli/remote"
8 "github.com/bnema/gordon/internal/domain"
9)
10
11// ControlPlane defines command operations available to CLI execution paths.
12//
13// Remote implementations call admin HTTP APIs.
14// Local implementations call services directly in-process.
15type ControlPlane interface {
16 ListRoutesWithDetails(ctx context.Context) ([]remote.RouteInfo, error)
17 GetHealth(ctx context.Context) (map[string]*remote.RouteHealth, error)
18 GetRoute(ctx context.Context, routeDomain string) (*domain.Route, error)
19 FindRoutesByImage(ctx context.Context, imageName string) ([]domain.Route, error)
20 AddRoute(ctx context.Context, route domain.Route) error
21 UpdateRoute(ctx context.Context, route domain.Route) error
22 RemoveRoute(ctx context.Context, routeDomain string) error
23 Bootstrap(ctx context.Context, req dto.BootstrapRequest) (*dto.BootstrapResponse, error)
24
25 ListSecretsWithAttachments(ctx context.Context, secretDomain string) (*remote.SecretsListResult, error)
26 SetSecrets(ctx context.Context, secretDomain string, secrets map[string]string) error
27 DeleteSecret(ctx context.Context, secretDomain, key string) error
28 SetAttachmentSecrets(ctx context.Context, domain, service string, secrets map[string]string) error
29 DeleteAttachmentSecret(ctx context.Context, domain, service, key string) error
30
31 GetAllAttachmentsConfig(ctx context.Context) (map[string][]string, error)
32 GetAttachmentsConfig(ctx context.Context, domainOrGroup string) ([]string, error)
33 ListOrphanedAttachments(ctx context.Context) ([]domain.CleanupAttachment, error)
34 CleanupOrphanedAttachments(ctx context.Context, owner string, stop bool) (*domain.CleanupReport, error)
35 FindAttachmentTargetsByImage(ctx context.Context, imageName string) ([]string, error)
36 AddAttachment(ctx context.Context, domainOrGroup, image string) error
37 RemoveAttachment(ctx context.Context, domainOrGroup, image string) error
38 GetAutoRouteAllowedDomains(ctx context.Context) ([]string, error)
39 AddAutoRouteAllowedDomain(ctx context.Context, pattern string) error
40 RemoveAutoRouteAllowedDomain(ctx context.Context, pattern string) error
41
42 GetStatus(ctx context.Context) (*remote.Status, error)
43 GetTLSStatus(ctx context.Context) (*dto.TLSStatusResponse, error)
44 GetTrafficStatus(ctx context.Context) (*dto.TrafficStatusResponse, error)
45 Reload(ctx context.Context) error
46 ListNetworks(ctx context.Context) ([]*domain.NetworkInfo, error)
47 GetConfig(ctx context.Context) (*remote.Config, error)
48 DeployIntent(ctx context.Context, imageName string) error
49 Deploy(ctx context.Context, deployDomain string) (*remote.DeployResult, error)
50 Restart(ctx context.Context, restartDomain string, withAttachments bool) (*remote.RestartResult, error)
51 ListTags(ctx context.Context, repository string) ([]string, error)
52
53 ListBackups(ctx context.Context, backupDomain string) ([]dto.BackupJob, error)
54 BackupStatus(ctx context.Context) ([]dto.BackupJob, error)
55 RunBackup(ctx context.Context, backupDomain, dbName string) (*dto.BackupRunResponse, error)
56 DetectDatabases(ctx context.Context, backupDomain string) ([]dto.DatabaseInfo, error)
57 ListVolumeBackups(ctx context.Context, backupDomain string) ([]dto.VolumeBackupJob, error)
58 VolumeBackupStatus(ctx context.Context) ([]dto.VolumeBackupJob, error)
59 RunVolumeBackups(ctx context.Context, backupDomain, volumeName string) (*dto.VolumeBackupRunResponse, error)
60
61 GetProcessLogs(ctx context.Context, lines int) ([]string, error)
62 GetContainerLogs(ctx context.Context, logDomain string, lines int) ([]string, error)
63 StreamProcessLogs(ctx context.Context, lines int) (<-chan string, error)
64 StreamContainerLogs(ctx context.Context, logDomain string, lines int) (<-chan string, error)
65
66 ListVolumes(ctx context.Context) ([]dto.Volume, error)
67 PruneVolumes(ctx context.Context, req dto.VolumePruneRequest) (*dto.VolumePruneResponse, error)
68}