Documentation ¶
Index ¶
- Variables
- type AWATClient
- type BackupProvisioner
- type BackupSupervisor
- type ClusterInstallationProvisioner
- type ClusterInstallationSupervisor
- type ClusterProvisioner
- type ClusterProvisionerOption
- type ClusterSupervisor
- type DBMigrationCIProvisioner
- type DBMigrationSupervisor
- type DNSManager
- func (dm *DNSManager) AddProvider(provider InstallationDNSProvider)
- func (dm *DNSManager) CreateDNSRecords(customerDNSName []string, dnsEndpoints []string, logger logrus.FieldLogger) error
- func (dm *DNSManager) DeleteDNSRecords(customerDNSName []string, logger logrus.FieldLogger) error
- func (dm *DNSManager) IsValid() error
- type Doer
- type GroupSupervisor
- type ImportProvisioner
- type ImportSupervisor
- type InstallationDBRestorationSupervisor
- type InstallationDNSProvider
- type InstallationDeletionSupervisor
- type InstallationProvisioner
- type InstallationSupervisor
- type InstallationSupervisorCache
- type InstallationSupervisorSchedulingOptions
- type MultiDoer
- type RestoreProvisioner
- type Route53DNSProvider
- type Scheduler
Constants ¶
This section is empty.
Variables ¶
var ErrJobBackoffLimitReached = errors.New("job reached backoff limit")
ErrJobBackoffLimitReached indicates that job failed all possible attempts and there is no reason for retrying.
Functions ¶
This section is empty.
Types ¶
type AWATClient ¶ added in v0.45.0
type AWATClient interface { CreateTranslation(translationRequest *awat.TranslationRequest) (*awat.TranslationStatus, error) GetTranslationStatus(translationID string) (*awat.TranslationStatus, error) GetTranslationStatusesByInstallation(installationID string) ([]*awat.TranslationStatus, error) GetAllTranslations() ([]*awat.TranslationStatus, error) GetTranslationReadyToImport(request *awat.ImportWorkRequest) (*awat.ImportStatus, error) GetImportStatusesByInstallation(installationID string) ([]*awat.ImportStatus, error) GetImportStatusesByTranslation(translationID string) ([]*awat.ImportStatus, error) ListImports() ([]*awat.ImportStatus, error) GetImportStatus(importID string) (*awat.ImportStatus, error) CompleteImport(completed *awat.ImportCompletedWorkRequest) error ReleaseLockOnImport(importID string) error }
AWATClient is the programmatic interface to the AWAT API.
type BackupProvisioner ¶ added in v0.44.0
type BackupProvisioner interface { TriggerBackup(backupMeta *model.InstallationBackup, cluster *model.Cluster, installation *model.Installation) (*model.S3DataResidence, error) CheckBackupStatus(backupMeta *model.InstallationBackup, cluster *model.Cluster) (int64, error) CleanupBackupJob(backup *model.InstallationBackup, cluster *model.Cluster) error }
BackupProvisioner provisions backup jobs on a cluster.
type BackupSupervisor ¶ added in v0.44.0
type BackupSupervisor struct {
// contains filtered or unexported fields
}
BackupSupervisor finds backup pending work and effects the required changes.
The degree of parallelism is controlled by a weighted semaphore, intended to be shared with other clients needing to coordinate background jobs.
func NewBackupSupervisor ¶ added in v0.44.0
func NewBackupSupervisor( store installationBackupStore, provisioner BackupProvisioner, aws aws.AWS, instanceID string, logger log.FieldLogger) *BackupSupervisor
NewBackupSupervisor creates a new BackupSupervisor.
func (*BackupSupervisor) Do ¶ added in v0.44.0
func (s *BackupSupervisor) Do() error
Do looks for work to be done on any pending backups and attempts to schedule the required work.
func (*BackupSupervisor) Shutdown ¶ added in v0.44.0
func (s *BackupSupervisor) Shutdown()
Shutdown performs graceful shutdown tasks for the backup supervisor.
func (*BackupSupervisor) Supervise ¶ added in v0.44.0
func (s *BackupSupervisor) Supervise(backup *model.InstallationBackup)
Supervise schedules the required work on the given backup.
type ClusterInstallationProvisioner ¶ added in v0.71.0
type ClusterInstallationProvisioner interface { CreateClusterInstallation(cluster *model.Cluster, installation *model.Installation, installationDNS []*model.InstallationDNS, clusterInstallation *model.ClusterInstallation) error EnsureCRMigrated(cluster *model.Cluster, clusterInstallation *model.ClusterInstallation) (bool, error) HibernateClusterInstallation(cluster *model.Cluster, installation *model.Installation, clusterInstallation *model.ClusterInstallation) error UpdateClusterInstallation(cluster *model.Cluster, installation *model.Installation, installationDNS []*model.InstallationDNS, clusterInstallation *model.ClusterInstallation) error DeleteOldClusterInstallationLicenseSecrets(cluster *model.Cluster, installation *model.Installation, clusterInstallation *model.ClusterInstallation) error DeleteClusterInstallation(cluster *model.Cluster, installation *model.Installation, clusterInstallation *model.ClusterInstallation) error IsResourceReadyAndStable(cluster *model.Cluster, clusterInstallation *model.ClusterInstallation) (bool, bool, error) RefreshSecrets(cluster *model.Cluster, installation *model.Installation, clusterInstallation *model.ClusterInstallation) error PrepareClusterUtilities(cluster *model.Cluster, installation *model.Installation, store model.ClusterUtilityDatabaseStoreInterface) error }
ClusterInstallationProvisioner is an interface for provisioning and managing ClusterInstallations.
type ClusterInstallationSupervisor ¶
type ClusterInstallationSupervisor struct {
// contains filtered or unexported fields
}
ClusterInstallationSupervisor finds cluster installations pending work and effects the required changes.
The degree of parallelism is controlled by a weighted semaphore, intended to be shared with other clients needing to coordinate background jobs.
func NewClusterInstallationSupervisor ¶
func NewClusterInstallationSupervisor(store clusterInstallationStore, provisioner ClusterInstallationProvisioner, eventsProducer eventProducer, instanceID string, logger log.FieldLogger, metrics *metrics.CloudMetrics) *ClusterInstallationSupervisor
NewClusterInstallationSupervisor creates a new ClusterInstallationSupervisor.
func (*ClusterInstallationSupervisor) Do ¶
func (s *ClusterInstallationSupervisor) Do() error
Do looks for work to be done on any pending cluster installations and attempts to schedule the required work.
func (*ClusterInstallationSupervisor) Shutdown ¶ added in v0.20.0
func (s *ClusterInstallationSupervisor) Shutdown()
Shutdown performs graceful shutdown tasks for the cluster installation supervisor.
func (*ClusterInstallationSupervisor) Supervise ¶
func (s *ClusterInstallationSupervisor) Supervise(clusterInstallation *model.ClusterInstallation)
Supervise schedules the required work on the given cluster installation.
type ClusterProvisioner ¶ added in v0.71.0
type ClusterProvisioner interface { PrepareCluster(cluster *model.Cluster) bool CreateCluster(cluster *model.Cluster) error CheckClusterCreated(cluster *model.Cluster) (bool, error) CreateNodegroups(cluster *model.Cluster) error CheckNodegroupsCreated(cluster *model.Cluster) (bool, error) DeleteNodegroups(cluster *model.Cluster) error ProvisionCluster(cluster *model.Cluster) error UpgradeCluster(cluster *model.Cluster) error ResizeCluster(cluster *model.Cluster) error DeleteCluster(cluster *model.Cluster) (bool, error) RefreshClusterMetadata(cluster *model.Cluster) error }
ClusterProvisioner abstracts the provisioning operations required by the cluster supervisor.
type ClusterProvisionerOption ¶ added in v0.71.0
type ClusterProvisionerOption interface {
GetClusterProvisioner(provisioner string) ClusterProvisioner
}
type ClusterSupervisor ¶
type ClusterSupervisor struct {
// contains filtered or unexported fields
}
ClusterSupervisor finds clusters pending work and effects the required changes.
The degree of parallelism is controlled by a weighted semaphore, intended to be shared with other clients needing to coordinate background jobs.
func NewClusterSupervisor ¶
func NewClusterSupervisor(store clusterStore, provisioner ClusterProvisionerOption, eventProducer eventProducer, instanceID string, grafanaClient grafana.Client, metrics *metrics.CloudMetrics, logger log.FieldLogger) *ClusterSupervisor
NewClusterSupervisor creates a new ClusterSupervisor.
func (*ClusterSupervisor) Do ¶
func (s *ClusterSupervisor) Do() error
Do looks for work to be done on any pending clusters and attempts to schedule the required work.
func (*ClusterSupervisor) Shutdown ¶ added in v0.20.0
func (s *ClusterSupervisor) Shutdown()
Shutdown performs graceful shutdown tasks for the cluster supervisor.
func (*ClusterSupervisor) Supervise ¶
func (s *ClusterSupervisor) Supervise(cluster *model.Cluster)
Supervise schedules the required work on the given cluster.
type DBMigrationCIProvisioner ¶ added in v0.71.0
type DBMigrationCIProvisioner interface { ClusterInstallationProvisioner(version string) ClusterInstallationProvisioner ExecClusterInstallationJob(cluster *model.Cluster, clusterInstallation *model.ClusterInstallation, args ...string) error }
type DBMigrationSupervisor ¶ added in v0.45.0
type DBMigrationSupervisor struct {
// contains filtered or unexported fields
}
DBMigrationSupervisor finds pending work and effects the required changes.
The degree of parallelism is controlled by a weighted semaphore, intended to be shared with other clients needing to coordinate background jobs.
func NewInstallationDBMigrationSupervisor ¶ added in v0.45.0
func NewInstallationDBMigrationSupervisor( store installationDBMigrationStore, aws aws.AWS, dbProvider databaseProvider, instanceID string, provisioner DBMigrationCIProvisioner, eventsProducer eventProducer, logger log.FieldLogger) *DBMigrationSupervisor
NewInstallationDBMigrationSupervisor creates a new DBMigrationSupervisor.
func (*DBMigrationSupervisor) Do ¶ added in v0.45.0
func (s *DBMigrationSupervisor) Do() error
Do looks for work to be done on any pending backups and attempts to schedule the required work.
func (*DBMigrationSupervisor) Shutdown ¶ added in v0.45.0
func (s *DBMigrationSupervisor) Shutdown()
Shutdown performs graceful shutdown tasks for the supervisor.
func (*DBMigrationSupervisor) Supervise ¶ added in v0.45.0
func (s *DBMigrationSupervisor) Supervise(migration *model.InstallationDBMigrationOperation)
Supervise schedules the required work on the given backup.
type DNSManager ¶ added in v0.59.0
type DNSManager struct {
// contains filtered or unexported fields
}
DNSManager wraps multiple InstallationDNSProviders.
func NewDNSManager ¶ added in v0.59.0
func NewDNSManager() *DNSManager
NewDNSManager creates new DNSManager without any providers.
func (*DNSManager) AddProvider ¶ added in v0.59.0
func (dm *DNSManager) AddProvider(provider InstallationDNSProvider)
AddProvider adds InstallationDNSProvider to the DNSManager.
func (*DNSManager) CreateDNSRecords ¶ added in v0.59.0
func (dm *DNSManager) CreateDNSRecords(customerDNSName []string, dnsEndpoints []string, logger logrus.FieldLogger) error
CreateDNSRecords creates DNS records with all registered providers.
func (*DNSManager) DeleteDNSRecords ¶ added in v0.59.0
func (dm *DNSManager) DeleteDNSRecords(customerDNSName []string, logger logrus.FieldLogger) error
DeleteDNSRecords deletes DNS record from all registered providers.
func (*DNSManager) IsValid ¶ added in v0.59.0
func (dm *DNSManager) IsValid() error
IsValid verifies if DNS providers are registered with DNSManager.
type GroupSupervisor ¶ added in v0.18.0
type GroupSupervisor struct {
// contains filtered or unexported fields
}
GroupSupervisor finds installations belonging to groups that need to have their configuration reconciled to match a new group configuration setting.
The degree of parallelism is controlled by a weighted semaphore, intended to be shared with other clients needing to coordinate background jobs.
func NewGroupSupervisor ¶ added in v0.18.0
func NewGroupSupervisor(store groupStore, eventsProducer eventProducer, instanceID string, logger log.FieldLogger) *GroupSupervisor
NewGroupSupervisor creates a new GroupSupervisor.
func (*GroupSupervisor) Do ¶ added in v0.18.0
func (s *GroupSupervisor) Do() error
Do looks for work to be done on any pending groups and attempts to schedule the required work.
func (*GroupSupervisor) Shutdown ¶ added in v0.20.0
func (s *GroupSupervisor) Shutdown()
Shutdown performs graceful shutdown tasks for the group supervisor.
func (*GroupSupervisor) Supervise ¶ added in v0.18.0
func (s *GroupSupervisor) Supervise(group *model.Group)
Supervise schedules the required work on the given group.
type ImportProvisioner ¶ added in v0.71.0
type ImportSupervisor ¶ added in v0.45.0
type ImportSupervisor struct { ID string // contains filtered or unexported fields }
ImportSupervisor is a supervisor which performs Workspace Imports from ready Imports produced by the AWAT. It periodically queries the AWAT for Imports waiting to be performed and then performs imports serially
func NewImportSupervisor ¶ added in v0.45.0
func NewImportSupervisor(awsClient toolsAWS.AWS, awat AWATClient, store importStore, provisioner ImportProvisioner, eventsProducer eventProducer, logger logrus.FieldLogger) *ImportSupervisor
NewImportSupervisor creates a new Import Supervisor
func (*ImportSupervisor) Do ¶ added in v0.45.0
func (s *ImportSupervisor) Do() error
Do checks to see if there is an Import that is ready to be imported, and if so, does that. Otherwise, it does nothing.
func (*ImportSupervisor) Shutdown ¶ added in v0.45.0
func (s *ImportSupervisor) Shutdown()
Shutdown is called when the ImportSupervisor is stopped. TODO change Shutdown from a no-op to allowing it to unlock ongoing Imports so that they are detected as interrupted by the AWAT and can be re-served to another Provisioner instance as a cleaner retry pattern
type InstallationDBRestorationSupervisor ¶ added in v0.45.0
type InstallationDBRestorationSupervisor struct {
// contains filtered or unexported fields
}
InstallationDBRestorationSupervisor finds pending work and effects the required changes.
The degree of parallelism is controlled by a weighted semaphore, intended to be shared with other clients needing to coordinate background jobs.
func NewInstallationDBRestorationSupervisor ¶ added in v0.45.0
func NewInstallationDBRestorationSupervisor( store installationDBRestorationStore, aws aws.AWS, provisioner RestoreProvisioner, eventsProducer eventProducer, instanceID string, logger log.FieldLogger) *InstallationDBRestorationSupervisor
NewInstallationDBRestorationSupervisor creates a new InstallationDBRestorationSupervisor.
func (*InstallationDBRestorationSupervisor) Do ¶ added in v0.45.0
func (s *InstallationDBRestorationSupervisor) Do() error
Do looks for work to be done on any pending restoration operations and attempts to schedule the required work.
func (*InstallationDBRestorationSupervisor) Shutdown ¶ added in v0.45.0
func (s *InstallationDBRestorationSupervisor) Shutdown()
Shutdown performs graceful shutdown tasks for the supervisor.
func (*InstallationDBRestorationSupervisor) Supervise ¶ added in v0.45.0
func (s *InstallationDBRestorationSupervisor) Supervise(restoration *model.InstallationDBRestorationOperation)
Supervise schedules the required work on the given restoration.
type InstallationDNSProvider ¶ added in v0.59.0
type InstallationDNSProvider interface { CreateDNSRecords(customerDNSName []string, dnsEndpoints []string, logger log.FieldLogger) error DeleteDNSRecords(customerDNSName []string, logger log.FieldLogger) error }
InstallationDNSProvider is an interface over DNS provider.
type InstallationDeletionSupervisor ¶ added in v0.60.0
type InstallationDeletionSupervisor struct {
// contains filtered or unexported fields
}
InstallationDeletionSupervisor finds installations pending deletion and effects the required changes.
The degree of parallelism is controlled by a weighted semaphore, intended to be shared with other clients needing to coordinate background jobs.
func NewInstallationDeletionSupervisor ¶ added in v0.60.0
func NewInstallationDeletionSupervisor( instanceID string, deletionPendingTime time.Duration, currentlyUpdatingLimit int64, store installationDeletionStore, eventsProducer eventProducer, logger log.FieldLogger) *InstallationDeletionSupervisor
NewInstallationDeletionSupervisor creates a new InstallationDeletionSupervisor.
func (*InstallationDeletionSupervisor) Do ¶ added in v0.60.0
func (s *InstallationDeletionSupervisor) Do() error
Do looks for work to be done on any pending installations and attempts to schedule the required work.
func (*InstallationDeletionSupervisor) Shutdown ¶ added in v0.60.0
func (s *InstallationDeletionSupervisor) Shutdown()
Shutdown performs graceful shutdown tasks for the installation deletion supervisor.
func (*InstallationDeletionSupervisor) Supervise ¶ added in v0.60.0
func (s *InstallationDeletionSupervisor) Supervise(installation *model.Installation)
Supervise schedules the required work on the given installation.
type InstallationProvisioner ¶ added in v0.71.0
type InstallationProvisioner interface { ClusterInstallationProvisioner(version string) ClusterInstallationProvisioner GetClusterResources(cluster *model.Cluster, canSchedule bool, logger log.FieldLogger) (*k8s.ClusterResources, error) GetPublicLoadBalancerEndpoint(cluster *model.Cluster, namespace string) (string, error) }
InstallationProvisioner abstracts the provisioning operations required by the installation supervisor.
type InstallationSupervisor ¶
type InstallationSupervisor struct {
// contains filtered or unexported fields
}
InstallationSupervisor finds installations pending work and effects the required changes.
The degree of parallelism is controlled by a weighted semaphore, intended to be shared with other clients needing to coordinate background jobs.
func NewInstallationSupervisor ¶
func NewInstallationSupervisor( store installationStore, provisioner InstallationProvisioner, instanceID string, keepDatabaseData, keepFilestoreData bool, scheduling InstallationSupervisorSchedulingOptions, resourceUtil *utils.ResourceUtil, logger log.FieldLogger, metrics *metrics.CloudMetrics, eventsProducer eventProducer, forceCRUpgrade bool, dnsProvider InstallationDNSProvider, disableDNSUpdates bool) *InstallationSupervisor
NewInstallationSupervisor creates a new InstallationSupervisor.
func (*InstallationSupervisor) Do ¶
func (s *InstallationSupervisor) Do() error
Do looks for work to be done on any pending installations and attempts to schedule the required work.
func (*InstallationSupervisor) Shutdown ¶ added in v0.20.0
func (s *InstallationSupervisor) Shutdown()
Shutdown performs graceful shutdown tasks for the installation supervisor.
func (*InstallationSupervisor) Supervise ¶
func (s *InstallationSupervisor) Supervise(installation *model.Installation)
Supervise schedules the required work on the given installation.
type InstallationSupervisorCache ¶ added in v0.54.1
type InstallationSupervisorCache struct {
// contains filtered or unexported fields
}
InstallationSupervisorCache contains configuration and cached data for cluster resources.
type InstallationSupervisorSchedulingOptions ¶ added in v0.35.0
type InstallationSupervisorSchedulingOptions struct { BalanceInstallations bool ClusterResourceThresholdCPU int ClusterResourceThresholdMemory int ClusterResourceThresholdPodCount int ClusterResourceThresholdScaleValue int }
InstallationSupervisorSchedulingOptions are the various options that control how installation scheduling occurs.
func NewInstallationSupervisorSchedulingOptions ¶ added in v0.35.0
func NewInstallationSupervisorSchedulingOptions(balanceInstallations bool, clusterResourceThreshold, thresholdCPUOverride, thresholdMemoryOverride, thresholdPodCountOverride, clusterResourceThresholdScaleValue int) InstallationSupervisorSchedulingOptions
NewInstallationSupervisorSchedulingOptions creates a new InstallationSupervisorSchedulingOptions.
func (*InstallationSupervisorSchedulingOptions) Validate ¶ added in v0.59.0
func (so *InstallationSupervisorSchedulingOptions) Validate() error
Validate validates InstallationSupervisorSchedulingOptions.
type MultiDoer ¶
type MultiDoer []Doer
MultiDoer is a slice of doers.
type RestoreProvisioner ¶ added in v0.71.0
type RestoreProvisioner interface { TriggerRestore(installation *model.Installation, backup *model.InstallationBackup, cluster *model.Cluster) error CheckRestoreStatus(backupMeta *model.InstallationBackup, cluster *model.Cluster) (int64, error) CleanupRestoreJob(backup *model.InstallationBackup, cluster *model.Cluster) error }
RestoreProvisioner abstracts different restoration operations required by the installation db restoration supervisor.
type Route53DNSProvider ¶ added in v0.59.0
type Route53DNSProvider struct {
// contains filtered or unexported fields
}
Route53DNSProvider wraps route53 function calls to implement InstallationDNSProvider interface.
func NewRoute53DNSProvider ¶ added in v0.59.0
func NewRoute53DNSProvider(aws aws.AWS) *Route53DNSProvider
NewRoute53DNSProvider creates Route53 Installation DNS Provider.
func (*Route53DNSProvider) CreateDNSRecords ¶ added in v0.59.0
func (r *Route53DNSProvider) CreateDNSRecords(customerDNSName []string, dnsEndpoints []string, logger logrus.FieldLogger) error
CreateDNSRecords creates or updates Route53 CNAME records.
func (*Route53DNSProvider) DeleteDNSRecords ¶ added in v0.59.0
func (r *Route53DNSProvider) DeleteDNSRecords(customerDNSName []string, logger logrus.FieldLogger) error
DeleteDNSRecords deletes Route53 CNAME records.
type Scheduler ¶
type Scheduler struct {
// contains filtered or unexported fields
}
Scheduler schedules a doer for periodic, serial execution.
func NewScheduler ¶
NewScheduler creates a new scheduler.
If the period is zero, the scheduler is never run, even if manually run. Otherwise, the period specifies how long to wait after its last successful execution.
func (*Scheduler) Close ¶
Close waits for any active doer to finish, terminates the main thread of the scheduler, and ensures the doer is no longer invoked.
Source Files ¶
- backup.go
- backup_lock.go
- cluster.go
- cluster_installation.go
- cluster_installation_lock.go
- cluster_lock.go
- common.go
- db_migration.go
- db_migration_lock.go
- dns.go
- doer.go
- group.go
- group_lock.go
- import.go
- installation.go
- installation_db_restoration.go
- installation_db_restoration_lock.go
- installation_deletion.go
- installation_lock.go
- scheduler.go