-
Notifications
You must be signed in to change notification settings - Fork 284
/
provider.go
68 lines (61 loc) · 3.92 KB
/
provider.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package providers
import (
"context"
"github.com/aws/eks-anywhere/pkg/api/v1alpha1"
"github.com/aws/eks-anywhere/pkg/bootstrapper"
"github.com/aws/eks-anywhere/pkg/cluster"
"github.com/aws/eks-anywhere/pkg/types"
)
type Provider interface {
Name() string
SetupAndValidateCreateCluster(ctx context.Context, clusterSpec *cluster.Spec) error
SetupAndValidateDeleteCluster(ctx context.Context, cluster *types.Cluster, clusterSpec *cluster.Spec) error
SetupAndValidateUpgradeCluster(ctx context.Context, cluster *types.Cluster, clusterSpec *cluster.Spec, currentSpec *cluster.Spec) error
UpdateSecrets(ctx context.Context, cluster *types.Cluster, clusterSpec *cluster.Spec) error
GenerateCAPISpecForCreate(ctx context.Context, managementCluster *types.Cluster, clusterSpec *cluster.Spec) (controlPlaneSpec, workersSpec []byte, err error)
GenerateCAPISpecForUpgrade(ctx context.Context, bootstrapCluster, workloadCluster *types.Cluster, currrentSpec, newClusterSpec *cluster.Spec) (controlPlaneSpec, workersSpec []byte, err error)
GenerateStorageClass() []byte
// PreCAPIInstallOnBootstrap is called after the bootstrap cluster is setup but before CAPI resources are installed on it. This allows us to do provider specific configuration on the bootstrap cluster.
PreCAPIInstallOnBootstrap(ctx context.Context, cluster *types.Cluster, clusterSpec *cluster.Spec) error
PostBootstrapSetup(ctx context.Context, clusterConfig *v1alpha1.Cluster, cluster *types.Cluster) error
PostBootstrapDeleteForUpgrade(ctx context.Context) error
PostBootstrapSetupUpgrade(ctx context.Context, clusterConfig *v1alpha1.Cluster, cluster *types.Cluster) error
// PostWorkloadInit is called after the workload cluster is created and initialized with a CNI. This allows us to do provider specific configuration on the workload cluster.
PostWorkloadInit(ctx context.Context, cluster *types.Cluster, clusterSpec *cluster.Spec) error
BootstrapClusterOpts(clusterSpec *cluster.Spec) ([]bootstrapper.BootstrapClusterOption, error)
UpdateKubeConfig(content *[]byte, clusterName string) error
Version(clusterSpec *cluster.Spec) string
EnvMap(clusterSpec *cluster.Spec) (map[string]string, error)
GetDeployments() map[string][]string
GetInfrastructureBundle(clusterSpec *cluster.Spec) *types.InfrastructureBundle
DatacenterConfig(clusterSpec *cluster.Spec) DatacenterConfig
DatacenterResourceType() string
MachineResourceType() string
MachineConfigs(clusterSpec *cluster.Spec) []MachineConfig
ValidateNewSpec(ctx context.Context, cluster *types.Cluster, clusterSpec *cluster.Spec) error
ChangeDiff(currentSpec, newSpec *cluster.Spec) *types.ComponentChangeDiff
RunPostControlPlaneUpgrade(ctx context.Context, oldClusterSpec *cluster.Spec, clusterSpec *cluster.Spec, workloadCluster *types.Cluster, managementCluster *types.Cluster) error
UpgradeNeeded(ctx context.Context, newSpec, currentSpec *cluster.Spec, cluster *types.Cluster) (bool, error)
DeleteResources(ctx context.Context, clusterSpec *cluster.Spec) error
InstallCustomProviderComponents(ctx context.Context, kubeconfigFile string) error
PostClusterDeleteValidate(ctx context.Context, managementCluster *types.Cluster) error
// PostMoveManagementToBootstrap is called after the CAPI management is moved back to the bootstrap cluster.
PostMoveManagementToBootstrap(ctx context.Context, bootstrapCluster *types.Cluster) error
}
type DatacenterConfig interface {
Kind() string
PauseReconcile()
ClearPauseAnnotation()
Marshallable() v1alpha1.Marshallable
}
type BuildMapOption func(map[string]interface{})
type TemplateBuilder interface {
GenerateCAPISpecControlPlane(clusterSpec *cluster.Spec, buildOptions ...BuildMapOption) (content []byte, err error)
GenerateCAPISpecWorkers(clusterSpec *cluster.Spec, workloadTemplateNames, kubeadmconfigTemplateNames map[string]string) (content []byte, err error)
}
type MachineConfig interface {
OSFamily() v1alpha1.OSFamily
Marshallable() v1alpha1.Marshallable
GetNamespace() string
GetName() string
}