-
Notifications
You must be signed in to change notification settings - Fork 77
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CLOUDP-228589: Migrate AuditLog to new Atlas SDK (#1651)
* migrate AuditLog to new Atlas SDK * adjust translation to match Atlas behavior * adjust and add missing test case * remove mutation from contract test * remove computed readonly config type from desired state --------- Co-authored-by: Sergiusz Urbaniak <[email protected]>
- Loading branch information
1 parent
4d0fca2
commit 4ad3f68
Showing
9 changed files
with
401 additions
and
266 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package translation | ||
|
||
import ( | ||
"context" | ||
|
||
"github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/translation/audit" | ||
) | ||
|
||
type AuditLogMock struct { | ||
GetFunc func(projectID string) (*audit.AuditConfig, error) | ||
SetFunc func(projectID string, auditing *audit.AuditConfig) error | ||
} | ||
|
||
func (c *AuditLogMock) Get(_ context.Context, projectID string) (*audit.AuditConfig, error) { | ||
return c.GetFunc(projectID) | ||
} | ||
func (c *AuditLogMock) Set(_ context.Context, projectID string, auditing *audit.AuditConfig) error { | ||
return c.SetFunc(projectID, auditing) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,57 +1,58 @@ | ||
package audit | ||
|
||
import ( | ||
"fmt" | ||
|
||
"go.mongodb.org/atlas-sdk/v20231115008/admin" | ||
|
||
"github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/pointer" | ||
akov2 "github.com/mongodb/mongodb-atlas-kubernetes/v2/pkg/api/v1" | ||
) | ||
|
||
type AuditingConfigType string | ||
|
||
const ( | ||
None AuditingConfigType = "NONE" | ||
FilterBuilder AuditingConfigType = "FILTER_BUILDER" | ||
FilterJSON AuditingConfigType = "FILTER_JSON" | ||
FilterDefault = "{}" | ||
) | ||
|
||
// AuditConfig represents the Atlas Project audit log config | ||
type AuditConfig struct { | ||
Enabled bool | ||
AuditAuthorizationSuccess bool | ||
ConfigurationType AuditingConfigType | ||
AuditFilter string | ||
*akov2.Auditing | ||
} | ||
|
||
func toAtlas(auditing *AuditConfig) *admin.AuditLog { | ||
return &admin.AuditLog{ | ||
Enabled: pointer.MakePtr(auditing.Enabled), | ||
AuditAuthorizationSuccess: pointer.MakePtr(auditing.AuditAuthorizationSuccess), | ||
AuditFilter: pointer.MakePtr(auditing.AuditFilter), | ||
// ConfigurationType is not set on the PATCH operation to Atlas | ||
func NewAuditConfig(auditConfig *akov2.Auditing) *AuditConfig { | ||
if auditConfig == nil { | ||
auditConfig = &akov2.Auditing{} | ||
} | ||
} | ||
|
||
func fromAtlas(auditLog *admin.AuditLog) (*AuditConfig, error) { | ||
cfgType, err := configTypeFromAtlas(auditLog.ConfigurationType) | ||
if err != nil { | ||
return nil, err | ||
if auditConfig.AuditFilter == "" { | ||
auditConfig.AuditFilter = FilterDefault | ||
} | ||
|
||
return &AuditConfig{ | ||
Enabled: pointer.GetOrDefault(auditLog.Enabled, false), | ||
AuditAuthorizationSuccess: pointer.GetOrDefault(auditLog.AuditAuthorizationSuccess, false), | ||
ConfigurationType: cfgType, | ||
AuditFilter: pointer.GetOrDefault(auditLog.AuditFilter, ""), | ||
}, nil | ||
Auditing: auditConfig, | ||
} | ||
} | ||
|
||
func configTypeFromAtlas(configType *string) (AuditingConfigType, error) { | ||
ct := pointer.GetOrDefault(configType, string(None)) | ||
switch ct { | ||
case string(None), string(FilterBuilder), string(FilterJSON): | ||
return AuditingConfigType(ct), nil | ||
default: | ||
return AuditingConfigType(ct), fmt.Errorf("unsupported Auditing Config type %q", ct) | ||
func toAtlas(auditing *AuditConfig) *admin.AuditLog { | ||
auditLog := admin.NewAuditLogWithDefaults() | ||
auditLog.SetEnabled(auditing.Enabled) | ||
auditLog.SetAuditAuthorizationSuccess(auditing.AuditAuthorizationSuccess) | ||
auditLog.SetAuditFilter(auditing.AuditFilter) | ||
// ConfigurationType is not set on the PATCH operation to Atlas | ||
|
||
return auditLog | ||
} | ||
|
||
func fromAtlas(auditLog *admin.AuditLog) *AuditConfig { | ||
auditFilter := FilterDefault | ||
|
||
if auditLog.GetAuditFilter() != "" { | ||
auditFilter = auditLog.GetAuditFilter() | ||
} | ||
|
||
return &AuditConfig{ | ||
Auditing: &akov2.Auditing{ | ||
Enabled: auditLog.GetEnabled(), | ||
AuditAuthorizationSuccess: auditLog.GetAuditAuthorizationSuccess(), | ||
AuditFilter: auditFilter, | ||
}, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.