Skip to content

Commit

Permalink
#48 convert config diff dtos to domain
Browse files Browse the repository at this point in the history
  • Loading branch information
jelemux committed Feb 21, 2024
1 parent 5a4566c commit a72bf43
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 4 deletions.
66 changes: 65 additions & 1 deletion pkg/adapter/kubernetes/blueprintcr/v1/doguConfigDiff.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package v1

import "github.com/cloudogu/k8s-blueprint-operator/pkg/domain"
import (
"github.com/cloudogu/k8s-blueprint-operator/pkg/domain"
"github.com/cloudogu/k8s-blueprint-operator/pkg/domain/common"
)

type CombinedDoguConfigDiff struct {
DoguConfigDiff DoguConfigDiff `json:"doguConfigDiff,omitempty"`
Expand All @@ -25,6 +28,67 @@ type SensitiveDoguConfigEntryDiff struct {
NeededAction ConfigAction `json:"neededAction,omitempty"`
}

func convertToCombinedDoguConfigDiffDomain(doguName string, dto CombinedDoguConfigDiff) domain.CombinedDoguConfigDiff {
var doguConfigDiff domain.DoguConfigDiff
if len(dto.DoguConfigDiff) != 0 {
doguConfigDiff = make(domain.DoguConfigDiff, len(dto.DoguConfigDiff))
for i, entryDiff := range dto.DoguConfigDiff {
doguConfigDiff[i] = convertToDoguConfigEntryDiffDomain(doguName, entryDiff)
}
}

var sensitiveDoguConfigDiff domain.SensitiveDoguConfigDiff
if len(dto.SensitiveDoguConfigDiff) != 0 {
sensitiveDoguConfigDiff = make(domain.SensitiveDoguConfigDiff, len(dto.SensitiveDoguConfigDiff))
for i, entryDiff := range dto.SensitiveDoguConfigDiff {
sensitiveDoguConfigDiff[i] = convertToSensitiveDoguConfigEntryDiffDomain(doguName, entryDiff)
}
}

return domain.CombinedDoguConfigDiff{
DoguConfigDiff: doguConfigDiff,
SensitiveDoguConfigDiff: sensitiveDoguConfigDiff,
}
}

func convertToDoguConfigEntryDiffDomain(doguName string, dto DoguConfigEntryDiff) domain.DoguConfigEntryDiff {
return domain.DoguConfigEntryDiff{
Key: common.DoguConfigKey{
DoguName: common.SimpleDoguName(doguName),
Key: dto.Key,
},
Actual: domain.DoguConfigValueState{
Value: dto.Actual.Value,
Exists: dto.Actual.Exists,
},
Expected: domain.DoguConfigValueState{
Value: dto.Expected.Value,
Exists: dto.Expected.Exists,
},
Action: domain.ConfigAction(dto.NeededAction),
}
}

func convertToSensitiveDoguConfigEntryDiffDomain(doguName string, dto SensitiveDoguConfigEntryDiff) domain.SensitiveDoguConfigEntryDiff {
return domain.SensitiveDoguConfigEntryDiff{
Key: common.SensitiveDoguConfigKey{
DoguConfigKey: common.DoguConfigKey{
DoguName: common.SimpleDoguName(doguName),
Key: dto.Key,
},
},
Actual: domain.EncryptedDoguConfigValueState{
Value: dto.Actual.Value,
Exists: dto.Actual.Exists,
},
Expected: domain.EncryptedDoguConfigValueState{
Value: dto.Expected.Value,
Exists: dto.Expected.Exists,
},
Action: domain.ConfigAction(dto.NeededAction),
}
}

func convertToCombinedDoguConfigDiffDTO(domainModel domain.CombinedDoguConfigDiff) CombinedDoguConfigDiff {
var doguConfigDiff DoguConfigDiff
if len(domainModel.DoguConfigDiff) != 0 {
Expand Down
32 changes: 31 additions & 1 deletion pkg/adapter/kubernetes/blueprintcr/v1/globalConfigDiff.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package v1

import "github.com/cloudogu/k8s-blueprint-operator/pkg/domain"
import (
"github.com/cloudogu/k8s-blueprint-operator/pkg/domain"
"github.com/cloudogu/k8s-blueprint-operator/pkg/domain/common"
)

type GlobalConfigDiff []GlobalConfigEntryDiff

Expand All @@ -12,6 +15,33 @@ type GlobalConfigEntryDiff struct {
NeededAction ConfigAction `json:"neededAction,omitempty"`
}

func convertToGlobalConfigDiffDomain(dto GlobalConfigDiff) domain.GlobalConfigDiff {
if len(dto) == 0 {
return nil
}

globalConfigDiff := make(domain.GlobalConfigDiff, len(dto))
for i, entryDiff := range dto {
globalConfigDiff[i] = convertToGlobalConfigEntryDiffDomain(entryDiff)
}
return globalConfigDiff
}

func convertToGlobalConfigEntryDiffDomain(dto GlobalConfigEntryDiff) domain.GlobalConfigEntryDiff {
return domain.GlobalConfigEntryDiff{
Key: common.GlobalConfigKey(dto.Key),
Actual: domain.GlobalConfigValueState{
Value: dto.Actual.Value,
Exists: dto.Actual.Exists,
},
Expected: domain.GlobalConfigValueState{
Value: dto.Expected.Value,
Exists: dto.Expected.Exists,
},
Action: domain.ConfigAction(dto.NeededAction),
}
}

func convertToGlobalConfigDiffDTO(domainModel domain.GlobalConfigDiff) GlobalConfigDiff {
if len(domainModel) == 0 {
return nil
Expand Down
15 changes: 13 additions & 2 deletions pkg/adapter/kubernetes/blueprintcr/v1/stateDiff.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"github.com/cloudogu/k8s-blueprint-operator/pkg/domain"
"github.com/cloudogu/k8s-blueprint-operator/pkg/domain/common"
)

// StateDiff is the result of comparing the EffectiveBlueprint to the current cluster state.
Expand Down Expand Up @@ -68,8 +69,18 @@ func ConvertToStateDiffDomain(dto StateDiff) (domain.StateDiff, error) {
return domain.StateDiff{}, fmt.Errorf("failed to convert state diff DTO to domain model: %w", err)
}

var doguConfigDiffs map[common.SimpleDoguName]domain.CombinedDoguConfigDiff
if len(dto.DoguConfigDiffs) != 0 {
doguConfigDiffs = make(map[common.SimpleDoguName]domain.CombinedDoguConfigDiff)
for doguName, doguConfigDiff := range dto.DoguConfigDiffs {
doguConfigDiffs[common.SimpleDoguName(doguName)] = convertToCombinedDoguConfigDiffDomain(doguName, doguConfigDiff)
}
}

return domain.StateDiff{
DoguDiffs: doguDiffs,
ComponentDiffs: componentDiffs,
DoguDiffs: doguDiffs,
ComponentDiffs: componentDiffs,
DoguConfigDiff: doguConfigDiffs,
GlobalConfigDiff: convertToGlobalConfigDiffDomain(dto.GlobalConfigDiff),
}, nil
}

0 comments on commit a72bf43

Please sign in to comment.