/
datasource_sessionrecordingpolicy.go
33 lines (30 loc) · 1.71 KB
/
datasource_sessionrecordingpolicy.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
package sessionrecording
import (
"context"
"github.com/bastionzero/bastionzero-sdk-go/bastionzero"
"github.com/bastionzero/bastionzero-sdk-go/bastionzero/service/policies"
"github.com/bastionzero/terraform-provider-bastionzero/internal"
"github.com/bastionzero/terraform-provider-bastionzero/internal/bzdatasource"
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/diag"
)
func NewSessionRecordingPolicyDataSource() datasource.DataSource {
return bzdatasource.NewSingleDataSource(
&bzdatasource.SingleDataSourceConfig[SessionRecordingPolicyModel, policies.SessionRecordingPolicy]{
BaseSingleDataSourceConfig: &bzdatasource.BaseSingleDataSourceConfig[SessionRecordingPolicyModel, policies.SessionRecordingPolicy]{
RecordSchema: internal.ResourceSchemaToDataSourceSchema(makeSessionRecordingPolicyResourceSchema(), bastionzero.PtrTo("id")),
MetadataTypeName: "sessionrecording_policy",
PrettyAttributeName: "session recording policy",
FlattenAPIModel: func(ctx context.Context, apiObject *policies.SessionRecordingPolicy, state *SessionRecordingPolicyModel) (diags diag.Diagnostics) {
SetSessionRecordingPolicyAttributes(ctx, state, apiObject, true)
return
},
GetAPIModel: func(ctx context.Context, tfModel SessionRecordingPolicyModel, client *bastionzero.Client) (*policies.SessionRecordingPolicy, error) {
policy, _, err := client.Policies.GetSessionRecordingPolicy(ctx, tfModel.ID.ValueString())
return policy, err
},
MarkdownDescription: "Get information on a BastionZero session recording policy. A session recording policy governs whether users' I/O during shell connections are recorded.",
},
},
)
}