Skip to content

Commit 577dbde

Browse files
eduardodfmexgithub-actions[bot]mawasile
authored
Edsanche/431 add retention policy duration to powerplatform environment settings (#527)
* adding auditretentionperiodv2 * Updating to use auditretentionperiodv2 * Fixing go lint errors. * Updating changes from PR comments. * try TestAccTestEnvironmentSettingsResource_Validate_Read on test. * Adding line to triger the test. * Remove log_retention_period_in_days attribute from environment settings schema and update related tests * Change AuditRetentionPeriodV2 type from int64 to int32 in environment settings DTO and model * Change AuditRetentionPeriodV2 type from int64 to int32 in environment settings DTO and model * Add log_retention_period_in_days attribute to environment settings documentation and schema * fixing auditretentionperiodv2 json name * updating prop validation * Update log retention period handling and test validations * Update documentation and schema for log retention period in environment settings --------- Co-authored-by: github-actions[bot] <tfmod442916@users.noreply.github.com> Co-authored-by: mawasile <50197777+mawasile@users.noreply.github.com>
1 parent a695e3d commit 577dbde

File tree

12 files changed

+48
-36
lines changed

12 files changed

+48
-36
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
kind: added
2+
body: powerplatform_environment_settings adding log_retention_period_in_days.
3+
time: 2024-11-26T18:54:01.884697624Z
4+
custom:
5+
Issue: "431"

docs/data-sources/environment_settings.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ Optional:
4242
- `is_audit_enabled` (Boolean) Is audit enabled
4343
- `is_read_audit_enabled` (Boolean) Is read audit enabled
4444
- `is_user_access_audit_enabled` (Boolean) Is user access audit enabled
45+
- `log_retention_period_in_days` (Number) Retain these logs for. See [Start/stop auditing for an environment and set retention policy](https://learn.microsoft.com/power-platform/admin/manage-dataverse-auditing#startstop-auditing-for-an-environment-and-set-retention-policy) You can set a retention period for how long audit logs are kept in an environment. Under Retain these logs for, choose the period of time you wish to retain the logs.
4546

4647

4748

docs/resources/environment_settings.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ resource "powerplatform_environment_settings" "settings" {
4545
is_audit_enabled = true
4646
is_user_access_audit_enabled = true
4747
is_read_audit_enabled = true
48+
log_retention_period_in_days = -1 //Forever
4849
}
4950
}
5051
email = {
@@ -97,6 +98,7 @@ Optional:
9798
- `is_audit_enabled` (Boolean) Is audit enabled
9899
- `is_read_audit_enabled` (Boolean) Is read audit enabled
99100
- `is_user_access_audit_enabled` (Boolean) Is user access audit enabled
101+
- `log_retention_period_in_days` (Number) Retain these logs for a value between 31 days and 24855 days, value of '-1' means logs will be retained forever. See [Start/stop auditing for an environment and set retention policy](https://learn.microsoft.com/power-platform/admin/manage-dataverse-auditing#startstop-auditing-for-an-environment-and-set-retention-policy) You can set a retention period for how long audit logs are kept in an environment. Under Retain these logs for, choose the period of time you wish to retain the logs.
100102

101103

102104

examples/resources/powerplatform_environment_settings/resource.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ resource "powerplatform_environment_settings" "settings" {
3030
is_audit_enabled = true
3131
is_user_access_audit_enabled = true
3232
is_read_audit_enabled = true
33+
log_retention_period_in_days = -1 //Forever
3334
}
3435
}
3536
email = {

internal/services/environment_settings/datasource_environment_settings.go

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -110,59 +110,53 @@ func (d *EnvironmentSettingsDataSource) Schema(ctx context.Context, req datasour
110110
Read: false,
111111
}),
112112
"environment_id": schema.StringAttribute{
113-
Description: "Unique environment id (guid)",
114113
MarkdownDescription: "Unique environment id (guid)",
115114
Required: true,
116115
},
117116
"audit_and_logs": schema.SingleNestedAttribute{
118-
Description: "Audit and Logs",
119117
MarkdownDescription: "Audit and Logs",
120118
Optional: true,
121119
Attributes: map[string]schema.Attribute{
122120
"plugin_trace_log_setting": schema.StringAttribute{
123-
Description: "Plugin trace log setting. Available options: Off, Exception, All",
124121
MarkdownDescription: "Plugin trace log setting. Available options: Off, Exception, All. See [Plugin Trace Log Settings Overview](https://learn.microsoft.com/power-apps/developer/data-platform/logging-tracing) for more details.",
125122
Optional: true,
126123
Validators: []validator.String{
127124
stringvalidator.OneOf("Off", "Exception", "All"),
128125
},
129126
},
130127
"audit_settings": schema.SingleNestedAttribute{
131-
Description: "Audit Settings",
132128
MarkdownDescription: "Audit Settings. See [Audit Settings Overview](https://learn.microsoft.com/power-platform/admin/system-settings-dialog-box-auditing-tab) for more details.",
133129
Optional: true,
134130
Attributes: map[string]schema.Attribute{
135131
"is_audit_enabled": schema.BoolAttribute{
136-
Description: "Is audit enabled",
137132
MarkdownDescription: "Is audit enabled",
138133
Optional: true,
139134
},
140135
"is_user_access_audit_enabled": schema.BoolAttribute{
141-
Description: "Is user access audit enabled",
142136
MarkdownDescription: "Is user access audit enabled",
143137
Optional: true,
144138
},
145139
"is_read_audit_enabled": schema.BoolAttribute{
146-
Description: "Is read audit enabled",
147140
MarkdownDescription: "Is read audit enabled",
148141
Optional: true,
149142
},
143+
"log_retention_period_in_days": schema.Int32Attribute{
144+
MarkdownDescription: "Retain these logs for. See [Start/stop auditing for an environment and set retention policy](https://learn.microsoft.com/power-platform/admin/manage-dataverse-auditing#startstop-auditing-for-an-environment-and-set-retention-policy) You can set a retention period for how long audit logs are kept in an environment. Under Retain these logs for, choose the period of time you wish to retain the logs.",
145+
Optional: true,
146+
},
150147
},
151148
},
152149
},
153150
},
154151
"email": schema.SingleNestedAttribute{
155-
Description: "Email",
156152
MarkdownDescription: "Email",
157153
Optional: true,
158154
Attributes: map[string]schema.Attribute{
159155
"email_settings": schema.SingleNestedAttribute{
160-
Description: "Email Settings",
161156
MarkdownDescription: "Email Settings. See [Email Settings Overview](https://learn.microsoft.com/power-platform/admin/settings-email) for more details.",
162157
Optional: true,
163158
Attributes: map[string]schema.Attribute{
164159
"max_upload_file_size_in_bytes": schema.Int64Attribute{
165-
Description: "Maximum file size that can be uploaded to the environment",
166160
MarkdownDescription: "Maximum file size that can be uploaded to the environment",
167161
Optional: true,
168162
},
@@ -171,24 +165,20 @@ func (d *EnvironmentSettingsDataSource) Schema(ctx context.Context, req datasour
171165
},
172166
},
173167
"product": schema.SingleNestedAttribute{
174-
Description: "Product",
175168
MarkdownDescription: "Product",
176169
Optional: true,
177170
Attributes: map[string]schema.Attribute{
178171
"behavior_settings": schema.SingleNestedAttribute{
179-
Description: "Behavior Settings",
180172
MarkdownDescription: "Behavior Settings.See [Behavior Settings Overview](https://learn.microsoft.com/power-platform/admin/settings-behavior) for more details.",
181173
Optional: true,
182174
Attributes: map[string]schema.Attribute{
183175
"show_dashboard_cards_in_expanded_state": schema.BoolAttribute{
184-
Description: "Show dashboard cards in expanded state",
185176
MarkdownDescription: "Show dashboard cards in expanded state",
186177
Optional: true,
187178
},
188179
},
189180
},
190181
"features": schema.SingleNestedAttribute{
191-
Description: "Features",
192182
MarkdownDescription: "Features. See [Features Overview](https://learn.microsoft.com/power-platform/admin/settings-features) for more details.",
193183
Optional: true,
194184
Attributes: map[string]schema.Attribute{

internal/services/environment_settings/datasource_environment_settings_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ func TestAccTestEnvironmentSettingsDataSource_Validate_Read(t *testing.T) {
4040
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_audit_enabled", "false"),
4141
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_read_audit_enabled", "false"),
4242
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_user_access_audit_enabled", "false"),
43+
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.log_retention_period_in_days", "-1"),
4344
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "email.email_settings.max_upload_file_size_in_bytes", "5242880"),
4445
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.plugin_trace_log_setting", "Off"),
4546
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "product.behavior_settings.show_dashboard_cards_in_expanded_state", "false"),
@@ -78,6 +79,7 @@ func TestUnitTestEnvironmentSettingsDataSource_Validate_Read(t *testing.T) {
7879
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_audit_enabled", "false"),
7980
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_read_audit_enabled", "true"),
8081
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_user_access_audit_enabled", "true"),
82+
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.log_retention_period_in_days", "-1"),
8183
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "email.email_settings.max_upload_file_size_in_bytes", "5242880"),
8284
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "audit_and_logs.plugin_trace_log_setting", "Off"),
8385
resource.TestCheckResourceAttr("data.powerplatform_environment_settings.settings", "product.behavior_settings.show_dashboard_cards_in_expanded_state", "true"),

internal/services/environment_settings/dto.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ type environmentSettingsDto struct {
1313
IsAuditEnabled *bool `json:"isauditenabled,omitempty"`
1414
IsUserAccessAuditEnabled *bool `json:"isuseraccessauditenabled,omitempty"`
1515
IsReadAuditEnabled *bool `json:"isreadauditenabled,omitempty"`
16+
AuditRetentionPeriodV2 *int32 `json:"auditretentionperiodv2,omitempty"`
1617
BoundDashboardDefaultCardExpanded *bool `json:"bounddashboarddefaultcardexpanded,omitempty"`
1718
OrganizationId *string `json:"organizationid,omitempty"`
1819
PowerAppsComponentFrameworkForCanvasApps *bool `json:"iscustomcontrolsincanvasappsenabled,omitempty"`

internal/services/environment_settings/models.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,10 @@ type AuditAndLogsSourceModel struct {
4747
}
4848

4949
type AuditSettingsSourceModel struct {
50-
IsAuditEnabled types.Bool `tfsdk:"is_audit_enabled"`
51-
IsUserAccessAuditEnabled types.Bool `tfsdk:"is_user_access_audit_enabled"`
52-
IsReadAuditEnabled types.Bool `tfsdk:"is_read_audit_enabled"`
50+
IsAuditEnabled types.Bool `tfsdk:"is_audit_enabled"`
51+
IsUserAccessAuditEnabled types.Bool `tfsdk:"is_user_access_audit_enabled"`
52+
IsReadAuditEnabled types.Bool `tfsdk:"is_read_audit_enabled"`
53+
AuditRetentionPeriodV2 types.Int32 `tfsdk:"log_retention_period_in_days"`
5354
}
5455

5556
type EmailSourceModel struct {
@@ -89,6 +90,9 @@ func convertFromEnvironmentSettingsModel(ctx context.Context, environmentSetting
8990
if !auditAndLogsSourceModel.IsReadAuditEnabled.IsNull() && !auditAndLogsSourceModel.IsReadAuditEnabled.IsUnknown() {
9091
environmentSettingsDto.IsReadAuditEnabled = auditAndLogsSourceModel.IsReadAuditEnabled.ValueBoolPointer()
9192
}
93+
if !auditAndLogsSourceModel.AuditRetentionPeriodV2.IsNull() && !auditAndLogsSourceModel.AuditRetentionPeriodV2.IsUnknown() {
94+
environmentSettingsDto.AuditRetentionPeriodV2 = auditAndLogsSourceModel.AuditRetentionPeriodV2.ValueInt32Pointer()
95+
}
9296

9397
pluginSettings := environmentSettings.AuditAndLogs.Attributes()["plugin_trace_log_setting"]
9498
if pluginSettings != nil && !pluginSettings.IsNull() && !pluginSettings.IsUnknown() {
@@ -165,16 +169,23 @@ func convertFromEnvironmentSettingsDto[T EnvironmentSettingsResourceModel | Envi
165169
}
166170
}
167171

172+
logRetentionPeriodTypeValue := types.Int32Value(-1)
173+
if environmentSettingsDto.AuditRetentionPeriodV2 != nil {
174+
logRetentionPeriodTypeValue = types.Int32Value(*environmentSettingsDto.AuditRetentionPeriodV2)
175+
}
176+
168177
attrValuesAuditSettingsProperties := map[string]attr.Value{
169178
"is_audit_enabled": types.BoolValue(*environmentSettingsDto.IsAuditEnabled),
170179
"is_user_access_audit_enabled": types.BoolValue(*environmentSettingsDto.IsUserAccessAuditEnabled),
171180
"is_read_audit_enabled": types.BoolValue(*environmentSettingsDto.IsReadAuditEnabled),
181+
"log_retention_period_in_days": logRetentionPeriodTypeValue,
172182
}
173183

174184
attrAuditSettingsObject := map[string]attr.Type{
175185
"is_audit_enabled": types.BoolType,
176186
"is_user_access_audit_enabled": types.BoolType,
177187
"is_read_audit_enabled": types.BoolType,
188+
"log_retention_period_in_days": types.Int32Type,
178189
}
179190

180191
attrTypesAuditAndLogsObject := map[string]attr.Type{

internal/services/environment_settings/resource_environment_settings_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ func TestAccTestEnvironmentSettingsResource_Validate_Read(t *testing.T) {
6161
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_audit_enabled", "true"),
6262
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_read_audit_enabled", "true"),
6363
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_user_access_audit_enabled", "true"),
64+
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.log_retention_period_in_days", "-1"),
6465
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "email.email_settings.max_upload_file_size_in_bytes", "100"),
6566
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.plugin_trace_log_setting", "All"),
6667
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "product.behavior_settings.show_dashboard_cards_in_expanded_state", "true"),
@@ -172,6 +173,7 @@ func TestUnitTestEnvironmentSettingsResource_Validate_Read(t *testing.T) {
172173
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_audit_enabled", "true"),
173174
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_read_audit_enabled", "true"),
174175
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.is_user_access_audit_enabled", "true"),
176+
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.audit_settings.log_retention_period_in_days", "-1"),
175177
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "email.email_settings.max_upload_file_size_in_bytes", "100"),
176178
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "audit_and_logs.plugin_trace_log_setting", "All"),
177179
resource.TestCheckResourceAttr("powerplatform_environment_settings.settings", "product.behavior_settings.show_dashboard_cards_in_expanded_state", "true"),

0 commit comments

Comments
 (0)