-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix: approve_plan_automatically attribute fails for sub_environment #954
Changes from 3 commits
6604c6f
8cf54b9
152b03f
25ddb1a
5c3d871
b1d22bb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -415,7 +415,8 @@ func setEnvironmentSchema(ctx context.Context, d *schema.ResourceData, environme | |
d.Set("output", string(environment.LatestDeploymentLog.Output)) | ||
} | ||
|
||
if environment.RequiresApproval != nil { | ||
// Don't update this value for workflow environments - this value should always be 'false'. | ||
if _, isWorkflow := d.GetOk("sub_environment_configuration"); !isWorkflow && environment.RequiresApproval != nil { | ||
d.Set("approve_plan_automatically", !*environment.RequiresApproval) | ||
} | ||
|
||
|
@@ -976,9 +977,20 @@ func getCreatePayload(d *schema.ResourceData, apiClient client.ApiClientInterfac | |
payload.AutoDeployOnPathChangesOnly = boolPtr(val.(bool)) | ||
} | ||
|
||
_, isWorkflow := d.GetOk("sub_environment_configuration") | ||
|
||
//lint:ignore SA1019 reason: https://github.com/hashicorp/terraform-plugin-sdk/issues/817 | ||
if val, exists := d.GetOkExists("approve_plan_automatically"); exists { | ||
payload.RequiresApproval = boolPtr(!val.(bool)) | ||
|
||
if isWorkflow && *payload.RequiresApproval { | ||
return client.EnvironmentCreate{}, diag.Errorf("approve_plan_automatically cannot be 'false' for workflows") | ||
} | ||
} | ||
|
||
// For 'Workflows', the 'root' environment should never require an approval. | ||
if _, ok := d.GetOk("sub_environment_configuration"); ok { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can we reuse the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. thanks! fixed! |
||
payload.RequiresApproval = boolPtr(false) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. how does this There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. line 986 - is the use-case when someone excplicitly set 'approve_plan_automatically' to 'false' and it's a workflow - in that case we can quickly error out as bad schema set by the user. line 992 - is the use-case where it's a workflow - the value is forced to be 'false'. |
||
} | ||
|
||
//lint:ignore SA1019 reason: https://github.com/hashicorp/terraform-plugin-sdk/issues/817 | ||
|
@@ -1179,6 +1191,11 @@ func getDeployPayload(d *schema.ResourceData, apiClient client.ApiClientInterfac | |
payload.BlueprintRevision = revision.(string) | ||
} | ||
|
||
// For 'Workflows', the 'root' environment should never require a user approval. | ||
if _, ok := d.GetOk("sub_environment_configuration"); ok { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this shouldn't be needed... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. it seems that the backend will error if this is 'undefined'. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this could be overridden by a project policy, this is a good extra step anyways. |
||
payload.UserRequiresApproval = boolPtr(false) | ||
} | ||
|
||
if isRedeploy { | ||
if revision, ok := d.GetOk("without_template_settings.0.revision"); ok { | ||
payload.BlueprintRevision = revision.(string) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we add a test of wrong terraform configuration where customer put There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. added b1d22bb |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't modify the schema for workflow environment...
generally this would not be required... however due to the change in line 1195 (which I believe is a backend issue) - I had to add this here.
(see my comment in line 1195).