1.0.1
This commit is contained in:
91
internal/service/cloudbroker/audit/data_source_cb_audit.go
Normal file
91
internal/service/cloudbroker/audit/data_source_cb_audit.go
Normal file
@@ -0,0 +1,91 @@
|
||||
package audit
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts"
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource"
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/flattens"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/models"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/schemas"
|
||||
)
|
||||
|
||||
// Ensure the implementation satisfies the expected interfaces.
|
||||
var (
|
||||
_ datasource.DataSource = &dataSourceAudit{}
|
||||
)
|
||||
|
||||
func NewDataSourceAudit() datasource.DataSource {
|
||||
return &dataSourceAudit{}
|
||||
}
|
||||
|
||||
// dataSourceAudit is the data source implementation.
|
||||
type dataSourceAudit struct {
|
||||
client *decort.DecortClient
|
||||
}
|
||||
|
||||
func (d *dataSourceAudit) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
|
||||
// Read Terraform configuration data into the model
|
||||
var state models.DataSourceAudit
|
||||
resp.Diagnostics.Append(req.Config.Get(ctx, &state)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAudit: Error get state")
|
||||
return
|
||||
}
|
||||
auditGuid := state.AuditGuid.ValueString()
|
||||
tflog.Info(ctx, "Read dataSourceAudit: got state successfully", map[string]any{"audit_guid": auditGuid})
|
||||
|
||||
// Set timeouts
|
||||
readTimeout, diags := state.Timeouts.Read(ctx, constants.Timeout180s)
|
||||
resp.Diagnostics.Append(diags...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAudit: Error set timeout")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Read dataSourceAudit: set timeouts successfully", map[string]any{
|
||||
"audit_guid": auditGuid,
|
||||
"readTimeout": readTimeout})
|
||||
|
||||
ctx, cancel := context.WithTimeout(ctx, readTimeout)
|
||||
defer cancel()
|
||||
|
||||
// Map response body to schema
|
||||
resp.Diagnostics.Append(flattens.AuditDataSource(ctx, &state, d.client)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAudit: Error flatten")
|
||||
return
|
||||
}
|
||||
|
||||
// Set refreshed state
|
||||
resp.Diagnostics.Append(resp.State.Set(ctx, &state)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAudit: Error set state")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "End read dataSourceAudit", map[string]any{"audit_guid": auditGuid})
|
||||
}
|
||||
|
||||
func (d *dataSourceAudit) Schema(ctx context.Context, _ datasource.SchemaRequest, resp *datasource.SchemaResponse) {
|
||||
resp.Schema = schema.Schema{
|
||||
Attributes: schemas.MakeSchemaDataSourceAudit(),
|
||||
Blocks: map[string]schema.Block{
|
||||
"timeouts": timeouts.Block(ctx),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (d *dataSourceAudit) Metadata(_ context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) {
|
||||
resp.TypeName = req.ProviderTypeName + "_cb_audit"
|
||||
}
|
||||
|
||||
// Configure adds the provider configured client to the data source.
|
||||
func (d *dataSourceAudit) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) {
|
||||
tflog.Info(ctx, "Get Configure dataSourceAudit")
|
||||
d.client = client.DataSource(ctx, &req, resp)
|
||||
tflog.Info(ctx, "Getting Configure dataSourceAudit successfully")
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package audit
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts"
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource"
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/flattens"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/models"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/schemas"
|
||||
)
|
||||
|
||||
// Ensure the implementation satisfies the expected interfaces.
|
||||
var (
|
||||
_ datasource.DataSource = &dataSourceAuditLinkedJobs{}
|
||||
)
|
||||
|
||||
func NewDataSourceAuditLinkedJobs() datasource.DataSource {
|
||||
return &dataSourceAuditLinkedJobs{}
|
||||
}
|
||||
|
||||
// dataSourceAuditLinkedJobs is the data source implementation.
|
||||
type dataSourceAuditLinkedJobs struct {
|
||||
client *decort.DecortClient
|
||||
}
|
||||
|
||||
func (d *dataSourceAuditLinkedJobs) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
|
||||
// Read Terraform configuration data into the model
|
||||
var state models.DataSourceAuditLinkedJobs
|
||||
resp.Diagnostics.Append(req.Config.Get(ctx, &state)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAuditLinkedJobs: Error get state")
|
||||
return
|
||||
}
|
||||
auditGuid := state.AuditGuid.ValueString()
|
||||
tflog.Info(ctx, "Read dataSourceAudit: got state successfully", map[string]any{"audit_guid": auditGuid})
|
||||
|
||||
// Set timeouts
|
||||
readTimeout, diags := state.Timeouts.Read(ctx, constants.Timeout180s)
|
||||
resp.Diagnostics.Append(diags...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAuditLinkedJobs: Error set timeout")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Read dataSourceAuditLinkedJobs: set timeouts successfully", map[string]any{
|
||||
"audit_guid": auditGuid,
|
||||
"readTimeout": readTimeout})
|
||||
|
||||
ctx, cancel := context.WithTimeout(ctx, readTimeout)
|
||||
defer cancel()
|
||||
|
||||
// Map response body to schema
|
||||
resp.Diagnostics.Append(flattens.AuditLinkedJobsDataSource(ctx, &state, d.client)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAuditLinkedJobs: Error flatten")
|
||||
return
|
||||
}
|
||||
|
||||
// Set refreshed state
|
||||
resp.Diagnostics.Append(resp.State.Set(ctx, &state)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAuditLinkedJobs: Error set state")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "End read dataSourceAuditLinkedJobs", map[string]any{"audit_guid": auditGuid})
|
||||
}
|
||||
|
||||
func (d *dataSourceAuditLinkedJobs) Schema(ctx context.Context, _ datasource.SchemaRequest, resp *datasource.SchemaResponse) {
|
||||
resp.Schema = schema.Schema{
|
||||
Attributes: schemas.MakeSchemaDataSourceAuditLinkedJobs(),
|
||||
Blocks: map[string]schema.Block{
|
||||
"timeouts": timeouts.Block(ctx),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (d *dataSourceAuditLinkedJobs) Metadata(_ context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) {
|
||||
resp.TypeName = req.ProviderTypeName + "_cb_audit_linked_jobs"
|
||||
}
|
||||
|
||||
// Configure adds the provider configured client to the data source.
|
||||
func (d *dataSourceAuditLinkedJobs) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) {
|
||||
tflog.Info(ctx, "Get Configure dataSourceAuditLinkedJobs")
|
||||
d.client = client.DataSource(ctx, &req, resp)
|
||||
tflog.Info(ctx, "Getting Configure dataSourceAuditLinkedJobs successfully")
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package audit
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts"
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource"
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/flattens"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/models"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/schemas"
|
||||
)
|
||||
|
||||
// Ensure the implementation satisfies the expected interfaces.
|
||||
var (
|
||||
_ datasource.DataSource = &dataSourceAuditList{}
|
||||
)
|
||||
|
||||
func NewDataSourceAuditList() datasource.DataSource {
|
||||
return &dataSourceAuditList{}
|
||||
}
|
||||
|
||||
// dataSourceAuditList is the data source implementation.
|
||||
type dataSourceAuditList struct {
|
||||
client *decort.DecortClient
|
||||
}
|
||||
|
||||
func (d *dataSourceAuditList) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
|
||||
// Read Terraform configuration data into the model
|
||||
var state models.DataSourceAuditList
|
||||
resp.Diagnostics.Append(req.Config.Get(ctx, &state)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAuditList: Error get state")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Read dataSourceAuditList: got state successfully")
|
||||
|
||||
// Set timeouts
|
||||
readTimeout, diags := state.Timeouts.Read(ctx, constants.Timeout180s)
|
||||
resp.Diagnostics.Append(diags...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAuditList: Error set timeout")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Read dataSourceAuditList: set timeouts successfully", map[string]any{
|
||||
"readTimeout": readTimeout})
|
||||
|
||||
ctx, cancel := context.WithTimeout(ctx, readTimeout)
|
||||
defer cancel()
|
||||
|
||||
// Map response body to schema
|
||||
resp.Diagnostics.Append(flattens.AuditListDataSource(ctx, &state, d.client)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAuditList: Error flatten")
|
||||
return
|
||||
}
|
||||
|
||||
// Set refreshed state
|
||||
resp.Diagnostics.Append(resp.State.Set(ctx, &state)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Read dataSourceAuditList: Error set state")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "End read dataSourceAuditList")
|
||||
}
|
||||
|
||||
func (d *dataSourceAuditList) Schema(ctx context.Context, _ datasource.SchemaRequest, resp *datasource.SchemaResponse) {
|
||||
resp.Schema = schema.Schema{
|
||||
Attributes: schemas.MakeSchemaDataSourceAuditList(),
|
||||
Blocks: map[string]schema.Block{
|
||||
"timeouts": timeouts.Block(ctx),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (d *dataSourceAuditList) Metadata(_ context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) {
|
||||
resp.TypeName = req.ProviderTypeName + "_cb_audit_list"
|
||||
}
|
||||
|
||||
// Configure adds the provider configured client to the data source.
|
||||
func (d *dataSourceAuditList) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) {
|
||||
tflog.Info(ctx, "Get Configure dataSourceAuditList")
|
||||
d.client = client.DataSource(ctx, &req, resp)
|
||||
tflog.Info(ctx, "Getting Configure dataSourceAuditList successfully")
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package flattens
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-framework/diag"
|
||||
"github.com/hashicorp/terraform-plugin-framework/types"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/models"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/utilities"
|
||||
)
|
||||
|
||||
func AuditDataSource(ctx context.Context, state *models.DataSourceAudit, c *decort.DecortClient) diag.Diagnostics {
|
||||
tflog.Info(ctx, "Start flattens.AuditDataSource")
|
||||
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
auditGuid := state.AuditGuid.ValueString()
|
||||
|
||||
recordAudit, diags := utilities.AuditDataSourceCheckPresence(ctx, auditGuid, c)
|
||||
if diags.HasError() {
|
||||
return diags
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "flattens.AuditDataSource: before flatten", map[string]any{"audit_guid": auditGuid})
|
||||
|
||||
*state = models.DataSourceAudit{
|
||||
AuditGuid: state.AuditGuid,
|
||||
Timeouts: state.Timeouts,
|
||||
|
||||
Apitask: types.StringValue(recordAudit.Apitask),
|
||||
Arguments: types.StringValue(recordAudit.Arguments),
|
||||
Call: types.StringValue(recordAudit.Call),
|
||||
GUID: types.StringValue(recordAudit.GUID),
|
||||
ID: types.StringValue(recordAudit.GUID),
|
||||
Kwargs: types.StringValue(recordAudit.Kwargs),
|
||||
RemoteAddr: types.StringValue(recordAudit.RemoteAddr),
|
||||
ResponseTime: types.Float64Value(recordAudit.ResponseTime),
|
||||
Result: types.StringValue(recordAudit.Result),
|
||||
StatusCode: types.Int64Value(int64(recordAudit.StatusCode)),
|
||||
Tags: types.StringValue(recordAudit.Tags),
|
||||
Timestamp: types.Float64Value(recordAudit.Timestamp),
|
||||
TimestampEnd: types.Float64Value(recordAudit.TimestampEnd),
|
||||
User: types.StringValue(recordAudit.User),
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "End flattens.AuditDataSource", map[string]any{"audit_guid": auditGuid})
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package flattens
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/hashicorp/terraform-plugin-framework/diag"
|
||||
"github.com/hashicorp/terraform-plugin-framework/types"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/audit"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/models"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/utilities"
|
||||
)
|
||||
|
||||
func AuditLinkedJobsDataSource(ctx context.Context, state *models.DataSourceAuditLinkedJobs, c *decort.DecortClient) diag.Diagnostics {
|
||||
tflog.Info(ctx, "Start flattens.AuditLinkedJobsDataSource")
|
||||
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
auditGuid := state.AuditGuid.ValueString()
|
||||
|
||||
recordAudit, diags := utilities.AuditLinkedJobsDataSourceCheckPresence(ctx, auditGuid, c)
|
||||
if diags.HasError() {
|
||||
return diags
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "flattens.AuditLinkedJobsDataSource: before flatten", map[string]any{"audit_guid": auditGuid})
|
||||
|
||||
*state = models.DataSourceAuditLinkedJobs{
|
||||
AuditGuid: state.AuditGuid,
|
||||
Timeouts: state.Timeouts,
|
||||
|
||||
ID: types.StringValue(uuid.New().String()),
|
||||
Items: flattenLinkedJobs(ctx, *recordAudit),
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "End flattens.AuditLinkedJobsDataSource", map[string]any{"audit_guid": auditGuid})
|
||||
return nil
|
||||
}
|
||||
|
||||
func flattenLinkedJobs(ctx context.Context, linkedJobs []audit.ItemLinkedJobs) []models.LinkedJob {
|
||||
tflog.Info(ctx, "Start flattenLinkedJobs")
|
||||
|
||||
res := make([]models.LinkedJob, 0, len(linkedJobs))
|
||||
|
||||
for _, item := range linkedJobs {
|
||||
temp := models.LinkedJob{
|
||||
CMD: types.StringValue(item.CMD),
|
||||
GUID: types.StringValue(item.GUID),
|
||||
NID: types.Int64Value(int64(item.NID)),
|
||||
State: types.StringValue(item.State),
|
||||
TimeCreate: types.Int64Value(int64(item.TimeCreate)),
|
||||
TimeStart: types.Int64Value(int64(item.TimeStart)),
|
||||
TimeStop: types.Int64Value(int64(item.TimeStop)),
|
||||
Timeout: types.Int64Value(int64(item.Timeout)),
|
||||
}
|
||||
|
||||
res = append(res, temp)
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "End flattenLinkedJobs")
|
||||
return res
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package flattens
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-framework/diag"
|
||||
"github.com/hashicorp/terraform-plugin-framework/types"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/audit"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/models"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/utilities"
|
||||
)
|
||||
|
||||
func AuditListDataSource(ctx context.Context, state *models.DataSourceAuditList, c *decort.DecortClient) diag.Diagnostics {
|
||||
tflog.Info(ctx, "Start flattens.AuditListDataSource")
|
||||
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
recordAuditList, diags := utilities.AuditListDataSourceCheckPresence(ctx, state, c)
|
||||
if diags.HasError() {
|
||||
return diags
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "flattens.AuditListDataSource: before flatten")
|
||||
|
||||
*state = models.DataSourceAuditList{
|
||||
TimestampAt: state.TimestampAt,
|
||||
TimestampTo: state.TimestampTo,
|
||||
User: state.User,
|
||||
Call: state.Call,
|
||||
MinStatusCode: state.MinStatusCode,
|
||||
MaxStatusCode: state.MaxStatusCode,
|
||||
SortBy: state.SortBy,
|
||||
Page: state.Page,
|
||||
Size: state.Size,
|
||||
Timeouts: state.Timeouts,
|
||||
|
||||
EntryCount: types.Int64Value(int64(recordAuditList.EntryCount)),
|
||||
Items: flattenAuditItems(ctx, recordAuditList.Data),
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "End flattens.AuditListDataSource")
|
||||
return nil
|
||||
}
|
||||
|
||||
func flattenAuditItems(ctx context.Context, auditList []audit.ItemAudit) []models.ItemAudit {
|
||||
tflog.Info(ctx, "Start flattenAuditItems")
|
||||
|
||||
res := make([]models.ItemAudit, 0, len(auditList))
|
||||
|
||||
for _, item := range auditList {
|
||||
temp := models.ItemAudit{
|
||||
Call: types.StringValue(item.Call),
|
||||
GUID: types.StringValue(item.GUID),
|
||||
ResponseTime: types.Float64Value(item.ResponseTime),
|
||||
StatusCode: types.Int64Value(int64(item.StatusCode)),
|
||||
Timestamp: types.Float64Value(item.Timestamp),
|
||||
User: types.StringValue(item.User),
|
||||
}
|
||||
|
||||
res = append(res, temp)
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "End flattenAuditItems")
|
||||
return res
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts"
|
||||
"github.com/hashicorp/terraform-plugin-framework/types"
|
||||
)
|
||||
|
||||
type DataSourceAudit struct {
|
||||
//required field
|
||||
AuditGuid types.String `tfsdk:"audit_guid"`
|
||||
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
||||
|
||||
//response field
|
||||
Apitask types.String `tfsdk:"apitask"`
|
||||
Arguments types.String `tfsdk:"args"`
|
||||
Call types.String `tfsdk:"call"`
|
||||
GUID types.String `tfsdk:"guid"`
|
||||
ID types.String `tfsdk:"id"`
|
||||
Kwargs types.String `tfsdk:"kwargs"`
|
||||
RemoteAddr types.String `tfsdk:"remote_addr"`
|
||||
ResponseTime types.Float64 `tfsdk:"responsetime"`
|
||||
Result types.String `tfsdk:"result"`
|
||||
StatusCode types.Int64 `tfsdk:"status_code"`
|
||||
Tags types.String `tfsdk:"tags"`
|
||||
Timestamp types.Float64 `tfsdk:"timestamp"`
|
||||
TimestampEnd types.Float64 `tfsdk:"timestamp_end"`
|
||||
User types.String `tfsdk:"user"`
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts"
|
||||
"github.com/hashicorp/terraform-plugin-framework/types"
|
||||
)
|
||||
|
||||
type DataSourceAuditLinkedJobs struct {
|
||||
//required field
|
||||
AuditGuid types.String `tfsdk:"audit_guid"`
|
||||
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
||||
|
||||
//response field
|
||||
ID types.String `tfsdk:"id"`
|
||||
Items []LinkedJob `tfsdk:"items"`
|
||||
}
|
||||
|
||||
type LinkedJob struct {
|
||||
CMD types.String `tfsdk:"cmd"`
|
||||
GUID types.String `tfsdk:"guid"`
|
||||
NID types.Int64 `tfsdk:"nid"`
|
||||
State types.String `tfsdk:"state"`
|
||||
TimeCreate types.Int64 `tfsdk:"time_create"`
|
||||
TimeStart types.Int64 `tfsdk:"time_start"`
|
||||
TimeStop types.Int64 `tfsdk:"time_stop"`
|
||||
Timeout types.Int64 `tfsdk:"timeout"`
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform-plugin-framework-timeouts/datasource/timeouts"
|
||||
"github.com/hashicorp/terraform-plugin-framework/types"
|
||||
)
|
||||
|
||||
type DataSourceAuditList struct {
|
||||
//request field
|
||||
TimestampAt types.Int64 `tfsdk:"timestamp_at"`
|
||||
TimestampTo types.Int64 `tfsdk:"timestamp_to"`
|
||||
User types.String `tfsdk:"user"`
|
||||
Call types.String `tfsdk:"call"`
|
||||
MinStatusCode types.Int64 `tfsdk:"min_status_code"`
|
||||
MaxStatusCode types.Int64 `tfsdk:"max_status_code"`
|
||||
SortBy types.String `tfsdk:"sort_by"`
|
||||
Page types.Int64 `tfsdk:"page"`
|
||||
Size types.Int64 `tfsdk:"size"`
|
||||
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
||||
|
||||
//response field
|
||||
EntryCount types.Int64 `tfsdk:"entry_count"`
|
||||
Items []ItemAudit `tfsdk:"items"`
|
||||
}
|
||||
|
||||
type ItemAudit struct {
|
||||
Call types.String `tfsdk:"call"`
|
||||
GUID types.String `tfsdk:"guid"`
|
||||
ResponseTime types.Float64 `tfsdk:"responsetime"`
|
||||
StatusCode types.Int64 `tfsdk:"status_code"`
|
||||
Timestamp types.Float64 `tfsdk:"timestamp"`
|
||||
User types.String `tfsdk:"user"`
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package schemas
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
|
||||
)
|
||||
|
||||
func MakeSchemaDataSourceAudit() map[string]schema.Attribute {
|
||||
return map[string]schema.Attribute{
|
||||
"audit_guid": schema.StringAttribute{
|
||||
Required: true,
|
||||
},
|
||||
"apitask": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"args": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"call": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"guid": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"kwargs": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"remote_addr": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"responsetime": schema.Float64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"result": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"status_code": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"tags": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"timestamp": schema.Float64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"timestamp_end": schema.Float64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"user": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"id": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package schemas
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
|
||||
)
|
||||
|
||||
func MakeSchemaDataSourceAuditLinkedJobs() map[string]schema.Attribute {
|
||||
return map[string]schema.Attribute{
|
||||
"audit_guid": schema.StringAttribute{
|
||||
Required: true,
|
||||
},
|
||||
"id": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"items": schema.ListNestedAttribute{
|
||||
Computed: true,
|
||||
NestedObject: schema.NestedAttributeObject{
|
||||
Attributes: map[string]schema.Attribute{
|
||||
"cmd": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"guid": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"nid": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"state": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"time_create": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"time_start": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"time_stop": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"timeout": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package schemas
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
|
||||
)
|
||||
|
||||
func MakeSchemaDataSourceAuditList() map[string]schema.Attribute {
|
||||
return map[string]schema.Attribute{
|
||||
"timestamp_at": schema.Int64Attribute{
|
||||
Optional: true,
|
||||
},
|
||||
"timestamp_to": schema.Int64Attribute{
|
||||
Optional: true,
|
||||
},
|
||||
"user": schema.StringAttribute{
|
||||
Optional: true,
|
||||
},
|
||||
"call": schema.StringAttribute{
|
||||
Optional: true,
|
||||
},
|
||||
"min_status_code": schema.Int64Attribute{
|
||||
Optional: true,
|
||||
},
|
||||
"max_status_code": schema.Int64Attribute{
|
||||
Optional: true,
|
||||
},
|
||||
"sort_by": schema.StringAttribute{
|
||||
Optional: true,
|
||||
},
|
||||
"page": schema.Int64Attribute{
|
||||
Optional: true,
|
||||
},
|
||||
"size": schema.Int64Attribute{
|
||||
Optional: true,
|
||||
},
|
||||
"items": schema.ListNestedAttribute{
|
||||
Computed: true,
|
||||
NestedObject: schema.NestedAttributeObject{
|
||||
Attributes: map[string]schema.Attribute{
|
||||
"call": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"guid": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"responsetime": schema.Float64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"status_code": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"timestamp": schema.Float64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"user": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"entry_count": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package utilities
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-framework/diag"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/audit"
|
||||
)
|
||||
|
||||
func AuditDataSourceCheckPresence(ctx context.Context, auditGuid string, c *decort.DecortClient) (*audit.RecordAudit, diag.Diagnostics) {
|
||||
tflog.Info(ctx, fmt.Sprintf("AuditDataSourceCheckPresence: Get info about audit with ID - %v", auditGuid))
|
||||
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
recordAudit, err := c.CloudBroker().Audit().Get(ctx, audit.GetRequest{AuditGuid: auditGuid})
|
||||
if err != nil {
|
||||
diags.AddError(fmt.Sprintf("Cannot get info about audit with ID %v", auditGuid), err.Error())
|
||||
return nil, diags
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "AuditDataSourceCheckPresence: response from CloudBroker().Audit().Get", map[string]any{"audit_guid": auditGuid, "response": recordAudit})
|
||||
|
||||
return recordAudit, nil
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package utilities
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-framework/diag"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/audit"
|
||||
)
|
||||
|
||||
func AuditLinkedJobsDataSourceCheckPresence(ctx context.Context, auditGuid string, c *decort.DecortClient) (*audit.ListLinkedJobs, diag.Diagnostics) {
|
||||
tflog.Info(ctx, fmt.Sprintf("AuditLinkedJobsDataSourceCheckPresence: Get info about audit linked jobs with ID - %v", auditGuid))
|
||||
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
linkedJobsList, err := c.CloudBroker().Audit().LinkedJobs(ctx, audit.LinkedJobsRequest{AuditGuid: auditGuid})
|
||||
if err != nil {
|
||||
diags.AddError(fmt.Sprintf("Cannot get info about audit linked jobs with ID %v", auditGuid), err.Error())
|
||||
return nil, diags
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "AuditLinkedJobsDataSourceCheckPresence: response from CloudBroker().Audit().LinkedJobs", map[string]any{"audit_guid": auditGuid, "response": linkedJobsList})
|
||||
|
||||
return linkedJobsList, nil
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package utilities
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/hashicorp/terraform-plugin-framework/diag"
|
||||
"github.com/hashicorp/terraform-plugin-log/tflog"
|
||||
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/audit"
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudbroker/audit/models"
|
||||
)
|
||||
|
||||
func AuditListDataSourceCheckPresence(ctx context.Context, state *models.DataSourceAuditList, c *decort.DecortClient) (*audit.ListAudits, diag.Diagnostics) {
|
||||
tflog.Info(ctx, fmt.Sprintf("AuditListDataSourceCheckPresence: Get info about audit list"))
|
||||
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
req := audit.ListRequest{}
|
||||
|
||||
if !state.TimestampAt.IsNull() {
|
||||
req.TimestampAt = uint64(state.TimestampAt.ValueInt64())
|
||||
}
|
||||
if !state.TimestampTo.IsNull() {
|
||||
req.TimestampTo = uint64(state.TimestampTo.ValueInt64())
|
||||
}
|
||||
if !state.User.IsNull() {
|
||||
req.User = state.User.ValueString()
|
||||
}
|
||||
if !state.Call.IsNull() {
|
||||
req.Call = state.Call.ValueString()
|
||||
}
|
||||
if !state.MaxStatusCode.IsNull() {
|
||||
req.MaxStatusCode = uint64(state.MaxStatusCode.ValueInt64())
|
||||
}
|
||||
if !state.MinStatusCode.IsNull() {
|
||||
req.MinStatusCode = uint64(state.MinStatusCode.ValueInt64())
|
||||
}
|
||||
if !state.SortBy.IsNull() {
|
||||
req.SortBy = state.SortBy.ValueString()
|
||||
}
|
||||
if !state.Page.IsNull() {
|
||||
req.Page = uint64(state.Page.ValueInt64())
|
||||
}
|
||||
if !state.Size.IsNull() {
|
||||
req.Size = uint64(state.Size.ValueInt64())
|
||||
}
|
||||
|
||||
recordAuditList, err := c.CloudBroker().Audit().List(ctx, req)
|
||||
if err != nil {
|
||||
diags.AddError(fmt.Sprintf("Cannot get info about audit list"), err.Error())
|
||||
return nil, diags
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "AuditDataSourceCheckPresence: response from CloudBroker().Audit().List", map[string]any{"response": recordAuditList})
|
||||
|
||||
return recordAuditList, nil
|
||||
}
|
||||
Reference in New Issue
Block a user