Compare commits

..

2 Commits

Author SHA1 Message Date
Wojciech Pratkowiecki fd67acbc7f Move show plan to a function 2024-10-03 09:37:11 +02:00
Wojciech Pratkowiecki 9e53f117d2 Move dry run check before possible reutrns 2024-10-03 08:48:45 +02:00
1 changed files with 42 additions and 9 deletions

View File

@ -51,6 +51,43 @@ func parseTerraformActions(changes []*tfjson.ResourceChange, toInclude func(typ
return res
}
func showDryRunChanges(ctx context.Context, plan *tfjson.Plan) {
updateActions := make([]terraformlib.Action, 0)
for _, rc := range plan.ResourceChanges {
if rc.Change.Actions.Update() {
updateActions = append(updateActions, terraformlib.Action{
Action: terraformlib.ActionTypeUpdate,
ResourceType: rc.Type,
ResourceName: rc.Name,
})
}
}
createActions := make([]terraformlib.Action, 0)
for _, rc := range plan.ResourceChanges {
if rc.Change.Actions.Create() {
createActions = append(createActions, terraformlib.Action{
Action: terraformlib.ActionTypeCreate,
ResourceType: rc.Type,
ResourceName: rc.Name,
})
}
}
if len(updateActions) > 0 {
cmdio.LogString(ctx, "The following resources will be updated:")
for _, a := range updateActions {
cmdio.Log(ctx, a)
}
cmdio.LogString(ctx, "")
}
if len(createActions) > 0 {
cmdio.LogString(ctx, "The following resources will be created:")
for _, a := range createActions {
cmdio.Log(ctx, a)
}
cmdio.LogString(ctx, "")
}
}
func approvalForDeploy(ctx context.Context, b *bundle.Bundle) (bool, error) {
tf := b.Terraform
if tf == nil {
@ -63,6 +100,11 @@ func approvalForDeploy(ctx context.Context, b *bundle.Bundle) (bool, error) {
return false, err
}
if b.DryRun {
showDryRunChanges(ctx, plan)
return false, nil
}
schemaActions := parseTerraformActions(plan.ResourceChanges, func(typ string, actions tfjson.Actions) bool {
// Filter in only UC schema resources.
if typ != "databricks_schema" {
@ -115,15 +157,6 @@ properties such as the 'catalog' or 'storage' are changed:`
return true, nil
}
if b.DryRun {
cmdio.LogString(ctx, "Following changes would be deployed:")
_, err := tf.ShowPlanFile(ctx, b.Plan.Path)
if err != nil {
return false, err
}
return false, nil
}
if !cmdio.IsPromptSupported(ctx) {
return false, fmt.Errorf("the deployment requires destructive actions, but current console does not support prompting. Please specify --auto-approve if you would like to skip prompts and proceed")
}