mirror of https://github.com/kubernetes/kops.git
Get default CheckExisting from Target
This commit is contained in:
parent
f5fb91c858
commit
7abacb9b3b
|
|
@ -396,8 +396,6 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
return err
|
||||
}
|
||||
|
||||
checkExisting := true
|
||||
|
||||
project := ""
|
||||
|
||||
var sshPublicKeys [][]byte
|
||||
|
|
@ -729,7 +727,6 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
}
|
||||
|
||||
case TargetTerraform:
|
||||
checkExisting = false
|
||||
outDir := c.OutDir
|
||||
var vfsProvider *vfs.TerraformProvider
|
||||
if tfPath, ok := configBase.(vfs.TerraformPath); ok && featureflag.TerraformManagedFiles.Enabled() {
|
||||
|
|
@ -776,14 +773,14 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
|
|||
}
|
||||
c.Target = target
|
||||
|
||||
if checkExisting {
|
||||
if target.DefaultCheckExisting() {
|
||||
c.TaskMap, err = l.FindDeletions(cloud, c.LifecycleOverrides)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error finding deletions: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, cluster, cloud, keyStore, secretStore, configBase, checkExisting, c.TaskMap)
|
||||
context, err := fi.NewCloudupContext(ctx, target, cluster, cloud, keyStore, secretStore, configBase, c.TaskMap)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ func TestSharedEgressOnlyInternetGatewayDoesNotRename(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ func TestElasticIPCreate(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
@ -129,7 +129,7 @@ func checkNoChanges(t *testing.T, ctx context.Context, cloud fi.Cloud, allTasks
|
|||
}
|
||||
assetBuilder := assets.NewAssetBuilder(cluster, false)
|
||||
target := fi.NewCloudupDryRunTarget(assetBuilder, os.Stderr)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ func TestSharedInternetGatewayDoesNotRename(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ func TestSecurityGroupCreate(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ func TestSubnetCreate(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
@ -194,7 +194,7 @@ func TestSubnetCreateIPv6(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
@ -294,7 +294,7 @@ func TestSubnetCreateIPv6NetNum(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
@ -428,7 +428,7 @@ func TestSharedSubnetCreateDoesNotCreateNew(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ func TestVPCCreate(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
@ -181,7 +181,7 @@ func TestSharedVPCAdditionalCIDR(t *testing.T) {
|
|||
Cloud: cloud,
|
||||
}
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,10 @@ func (t *AWSAPITarget) ProcessDeletions() bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *AWSAPITarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *AWSAPITarget) Finish(taskMap map[string]fi.CloudupTask) error {
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,3 +44,7 @@ func (t *AzureAPITarget) Finish(taskMap map[string]fi.CloudupTask) error {
|
|||
func (t *AzureAPITarget) ProcessDeletions() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *AzureAPITarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,3 +39,7 @@ func (t *DOAPITarget) Finish(taskMap map[string]fi.CloudupTask) error {
|
|||
func (t *DOAPITarget) ProcessDeletions() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *DOAPITarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,3 +39,7 @@ func (t *GCEAPITarget) Finish(taskMap map[string]fi.CloudupTask) error {
|
|||
func (t *GCEAPITarget) ProcessDeletions() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *GCEAPITarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ func checkHasChanges(t *testing.T, ctx context.Context, cloud fi.Cloud, allTasks
|
|||
func runTasks(t *testing.T, ctx context.Context, cloud gce.GCECloud, allTasks map[string]fi.CloudupTask) {
|
||||
target := gce.NewGCEAPITarget(cloud)
|
||||
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
@ -119,7 +119,7 @@ func doDryRun(t *testing.T, ctx context.Context, cloud fi.Cloud, allTasks map[st
|
|||
}
|
||||
assetBuilder := assets.NewAssetBuilder(cluster, false)
|
||||
target := fi.NewCloudupDryRunTarget(assetBuilder, os.Stderr)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, true, allTasks)
|
||||
context, err := fi.NewCloudupContext(ctx, target, nil, cloud, nil, nil, nil, allTasks)
|
||||
if err != nil {
|
||||
t.Fatalf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,3 +39,7 @@ func (t *HetznerAPITarget) Finish(taskMap map[string]fi.CloudupTask) error {
|
|||
func (t *HetznerAPITarget) ProcessDeletions() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *HetznerAPITarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,3 +39,7 @@ func (t *OpenstackAPITarget) Finish(taskMap map[string]fi.CloudupTask) error {
|
|||
func (t *OpenstackAPITarget) ProcessDeletions() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *OpenstackAPITarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,3 +37,7 @@ func (s ScwAPITarget) Finish(taskMap map[string]fi.CloudupTask) error {
|
|||
func (s ScwAPITarget) ProcessDeletions() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *ScwAPITarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,6 +71,10 @@ func (t *TerraformTarget) ProcessDeletions() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (t *TerraformTarget) DefaultCheckExisting() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// tfGetProviderExtraConfig is a helper function to get extra config with safety checks on the pointers.
|
||||
func tfGetProviderExtraConfig(c *kops.TargetSpec) map[string]string {
|
||||
if c != nil &&
|
||||
|
|
|
|||
|
|
@ -36,8 +36,6 @@ type Context[T SubContext] struct {
|
|||
Target Target[T]
|
||||
Keystore Keystore
|
||||
|
||||
CheckExisting bool
|
||||
|
||||
tasks map[string]Task[T]
|
||||
warnings []*Warning[T]
|
||||
|
||||
|
|
@ -75,14 +73,13 @@ type Warning[T SubContext] struct {
|
|||
Message string
|
||||
}
|
||||
|
||||
func newContext[T SubContext](ctx context.Context, target Target[T], keystore Keystore, checkExisting bool, sub T, tasks map[string]Task[T]) (*Context[T], error) {
|
||||
func newContext[T SubContext](ctx context.Context, target Target[T], keystore Keystore, sub T, tasks map[string]Task[T]) (*Context[T], error) {
|
||||
c := &Context[T]{
|
||||
ctx: ctx,
|
||||
Target: target,
|
||||
Keystore: keystore,
|
||||
CheckExisting: checkExisting,
|
||||
tasks: tasks,
|
||||
T: sub,
|
||||
ctx: ctx,
|
||||
Target: target,
|
||||
Keystore: keystore,
|
||||
tasks: tasks,
|
||||
T: sub,
|
||||
}
|
||||
|
||||
return c, nil
|
||||
|
|
@ -90,24 +87,24 @@ func newContext[T SubContext](ctx context.Context, target Target[T], keystore Ke
|
|||
|
||||
func NewInstallContext(ctx context.Context, target InstallTarget, tasks map[string]InstallTask) (*InstallContext, error) {
|
||||
sub := InstallSubContext{}
|
||||
return newContext[InstallSubContext](ctx, target, nil, true, sub, tasks)
|
||||
return newContext[InstallSubContext](ctx, target, nil, sub, tasks)
|
||||
}
|
||||
func NewNodeupContext(ctx context.Context, target NodeupTarget, keystore Keystore, checkExisting bool, bootConfig *nodeup.BootConfig, nodeupConfig *nodeup.Config, tasks map[string]NodeupTask) (*NodeupContext, error) {
|
||||
func NewNodeupContext(ctx context.Context, target NodeupTarget, keystore Keystore, bootConfig *nodeup.BootConfig, nodeupConfig *nodeup.Config, tasks map[string]NodeupTask) (*NodeupContext, error) {
|
||||
sub := NodeupSubContext{
|
||||
BootConfig: bootConfig,
|
||||
NodeupConfig: nodeupConfig,
|
||||
}
|
||||
return newContext[NodeupSubContext](ctx, target, keystore, checkExisting, sub, tasks)
|
||||
return newContext[NodeupSubContext](ctx, target, keystore, sub, tasks)
|
||||
}
|
||||
|
||||
func NewCloudupContext(ctx context.Context, target CloudupTarget, cluster *kops.Cluster, cloud Cloud, keystore Keystore, secretStore SecretStore, clusterConfigBase vfs.Path, checkExisting bool, tasks map[string]CloudupTask) (*CloudupContext, error) {
|
||||
func NewCloudupContext(ctx context.Context, target CloudupTarget, cluster *kops.Cluster, cloud Cloud, keystore Keystore, secretStore SecretStore, clusterConfigBase vfs.Path, tasks map[string]CloudupTask) (*CloudupContext, error) {
|
||||
sub := CloudupSubContext{
|
||||
Cloud: cloud,
|
||||
Cluster: cluster,
|
||||
ClusterConfigBase: clusterConfigBase,
|
||||
SecretStore: secretStore,
|
||||
}
|
||||
return newContext[CloudupSubContext](ctx, target, keystore, checkExisting, sub, tasks)
|
||||
return newContext[CloudupSubContext](ctx, target, keystore, sub, tasks)
|
||||
}
|
||||
|
||||
func (c *Context[T]) AllTasks() map[string]Task[T] {
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ func defaultDeltaRunMethod[T SubContext](e Task[T], c *Context[T]) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
checkExisting := c.CheckExisting
|
||||
checkExisting := c.Target.DefaultCheckExisting()
|
||||
if hce, ok := e.(HasCheckExisting[T]); ok {
|
||||
checkExisting = hce.CheckExisting(c)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,6 +97,10 @@ func (t *DryRunTarget[T]) ProcessDeletions() bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *DryRunTarget[T]) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *DryRunTarget[T]) Render(a, e, changes Task[T]) error {
|
||||
valA := reflect.ValueOf(a)
|
||||
aIsNil := valA.IsNil()
|
||||
|
|
|
|||
|
|
@ -364,7 +364,6 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
|||
// Protokube load image task is in ProtokubeBuilder
|
||||
|
||||
var target fi.NodeupTarget
|
||||
checkExisting := true
|
||||
|
||||
switch c.Target {
|
||||
case "direct":
|
||||
|
|
@ -379,7 +378,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
|
|||
return fmt.Errorf("unsupported target type %q", c.Target)
|
||||
}
|
||||
|
||||
context, err := fi.NewNodeupContext(ctx, target, keyStore, checkExisting, &bootConfig, &nodeupConfig, taskMap)
|
||||
context, err := fi.NewNodeupContext(ctx, target, keyStore, &bootConfig, &nodeupConfig, taskMap)
|
||||
if err != nil {
|
||||
klog.Exitf("error building context: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,10 @@ func (t *InstallTarget) ProcessDeletions() bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *InstallTarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// CombinedOutput is a helper function that executes a command, returning stdout & stderr combined
|
||||
func (t *InstallTarget) CombinedOutput(args []string) ([]byte, error) {
|
||||
c := exec.Command(args[0], args[1:]...)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ func (t *LocalTarget) ProcessDeletions() bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *LocalTarget) DefaultCheckExisting() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// CombinedOutput is a helper function that executes a command, returning stdout & stderr combined
|
||||
func (t *LocalTarget) CombinedOutput(args []string) ([]byte, error) {
|
||||
c := exec.Command(args[0], args[1:]...)
|
||||
|
|
|
|||
|
|
@ -23,6 +23,10 @@ type Target[T SubContext] interface {
|
|||
// ProcessDeletions returns true if we should delete resources
|
||||
// Some providers (e.g. Terraform) actively keep state, and will delete resources automatically
|
||||
ProcessDeletions() bool
|
||||
|
||||
// DefaultCheckExisting returns true if DefaultDeltaRun tasks which aren't HasCheckExisting
|
||||
// should invoke Find() when running against this Target.
|
||||
DefaultCheckExisting() bool
|
||||
}
|
||||
|
||||
type CloudupTarget = Target[CloudupSubContext]
|
||||
|
|
|
|||
Loading…
Reference in New Issue