Skip to content

Commit

Permalink
ConvertFrom/ConvertTo approach
Browse files Browse the repository at this point in the history
  • Loading branch information
aorcholski committed Jul 10, 2024
1 parent df285d2 commit c3c709b
Show file tree
Hide file tree
Showing 14 changed files with 324 additions and 316 deletions.
13 changes: 11 additions & 2 deletions pkg/controllers/dynakube/activegate/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func NewReconciler(clt client.Client, //nolint
}
}

func (r *Reconciler) Reconcile(ctx context.Context) error {
func (r *Reconciler) Reconcile(ctx context.Context) error { //nolint:revive
err := r.createActiveGateTenantConnectionInfoConfigMap(ctx)
if err != nil {
return err
Expand All @@ -98,11 +98,20 @@ func (r *Reconciler) Reconcile(ctx context.Context) error {
return err
}

err = r.versionReconciler.ReconcileActiveGate(ctx, r.dynakube)
dynakubeV1beta3 := &dynakubev1beta3.DynaKube{}
if err := dynakubeV1beta3.ConvertFrom(r.dynakube); err != nil {
return err
}

err = r.versionReconciler.ReconcileActiveGate(ctx, dynakubeV1beta3)
if err != nil {
return err
}

if err := dynakubeV1beta3.ConvertTo(r.dynakube); err != nil {
return err
}

err = r.pullSecretReconciler.Reconcile(ctx)
if err != nil {
return err
Expand Down
24 changes: 17 additions & 7 deletions pkg/controllers/dynakube/injection/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

"github.com/Dynatrace/dynatrace-operator/pkg/api/status"
dynatracev1beta2 "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta2/dynakube"
dynakubev1beta3 "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube"
"github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace"
"github.com/Dynatrace/dynatrace-operator/pkg/controllers"
oaconnectioninfo "github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/connectioninfo/oneagent"
Expand Down Expand Up @@ -49,7 +50,7 @@ func NewReconciler(
apiReader client.Reader,
dynatraceClient dynatrace.Client,
istioClient *istio.Client,
dynakube *dynatracev1beta2.DynaKube,
dk *dynatracev1beta2.DynaKube,
) controllers.Reconciler {
var istioReconciler istio.Reconciler = nil

Expand All @@ -60,22 +61,31 @@ func NewReconciler(
return &reconciler{
client: client,
apiReader: apiReader,
dynakube: dynakube,
dynakube: dk,
istioReconciler: istioReconciler,
versionReconciler: version.NewReconciler(apiReader, dynatraceClient, timeprovider.New().Freeze()),
pmcSecretreconciler: processmoduleconfigsecret.NewReconciler(
client, apiReader, dynatraceClient, dynakube, timeprovider.New().Freeze()),
connectionInfoReconciler: oaconnectioninfo.NewReconciler(client, apiReader, dynatraceClient, dynakube),
enrichmentRulesReconciler: rules.NewReconciler(dynatraceClient, dynakube),
client, apiReader, dynatraceClient, dk, timeprovider.New().Freeze()),
connectionInfoReconciler: oaconnectioninfo.NewReconciler(client, apiReader, dynatraceClient, dk),
enrichmentRulesReconciler: rules.NewReconciler(dynatraceClient, dk),
}
}

func (r *reconciler) Reconcile(ctx context.Context) error {
err := r.versionReconciler.ReconcileCodeModules(ctx, r.dynakube)
func (r *reconciler) Reconcile(ctx context.Context) error { //nolint:revive
dynakubeV1beta3 := &dynakubev1beta3.DynaKube{}
if err := dynakubeV1beta3.ConvertFrom(r.dynakube); err != nil {
return err
}

err := r.versionReconciler.ReconcileCodeModules(ctx, dynakubeV1beta3)
if err != nil {
return err
}

if err := dynakubeV1beta3.ConvertTo(r.dynakube); err != nil {
return err
}

err = r.connectionInfoReconciler.Reconcile(ctx)
if err != nil {
return err
Expand Down
18 changes: 14 additions & 4 deletions pkg/controllers/dynakube/oneagent/oneagent_reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/Dynatrace/dynatrace-operator/pkg/api/scheme"
dynatracev1beta2 "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta2/dynakube"
dynakubev1beta3 "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube"
"github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace"
"github.com/Dynatrace/dynatrace-operator/pkg/controllers"
"github.com/Dynatrace/dynatrace-operator/pkg/controllers/dynakube/connectioninfo"
Expand Down Expand Up @@ -58,16 +59,16 @@ func NewReconciler( //nolint
client client.Client,
apiReader client.Reader,
dtClient dynatrace.Client,
dynakube *dynatracev1beta2.DynaKube,
dk *dynatracev1beta2.DynaKube,
tokens token.Tokens,
clusterID string,
) controllers.Reconciler {
return &Reconciler{
client: client,
apiReader: apiReader,
clusterID: clusterID,
dynakube: dynakube,
connectionInfoReconciler: oaconnectioninfo.NewReconciler(client, apiReader, dtClient, dynakube),
dynakube: dk,
connectionInfoReconciler: oaconnectioninfo.NewReconciler(client, apiReader, dtClient, dk),
versionReconciler: version.NewReconciler(apiReader, dtClient, timeprovider.New().Freeze()),
tokens: tokens,
}
Expand All @@ -93,11 +94,20 @@ type Reconciler struct {
func (r *Reconciler) Reconcile(ctx context.Context) error {
log.Info("reconciling OneAgent")

err := r.versionReconciler.ReconcileOneAgent(ctx, r.dynakube)
dynakubeV1beta3 := &dynakubev1beta3.DynaKube{}
if err := dynakubeV1beta3.ConvertFrom(r.dynakube); err != nil {
return err
}

err := r.versionReconciler.ReconcileOneAgent(ctx, dynakubeV1beta3)
if err != nil {
return err
}

if err := dynakubeV1beta3.ConvertTo(r.dynakube); err != nil {
return err
}

err = r.connectionInfoReconciler.Reconcile(ctx)
if errors.Is(err, oaconnectioninfo.NoOneAgentCommunicationHostsError) { // This only informational
log.Info("OneAgent were not yet able to communicate with tenant, no direct route or ready ActiveGate available, postponing OneAgent deployment")
Expand Down
20 changes: 8 additions & 12 deletions pkg/controllers/dynakube/version/activegate.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import (
"context"

"github.com/Dynatrace/dynatrace-operator/pkg/api/status"
"github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta2/dynakube"
dynakubev1beta3 "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube"
"github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube"
dtclient "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace"
"github.com/Dynatrace/dynatrace-operator/pkg/util/conditions"
"github.com/pkg/errors"
Expand All @@ -18,23 +17,20 @@ const (
)

type activeGateUpdater struct {
dynakube *dynakube.DynaKube
dynakubeV1beta3 *dynakubev1beta3.DynaKube
apiReader client.Reader
dtClient dtclient.Client
dynakube *dynakube.DynaKube
apiReader client.Reader
dtClient dtclient.Client
}

func newActiveGateUpdater(
dynakube *dynakube.DynaKube,
dynakubeV1beta3 *dynakubev1beta3.DynaKube,
apiReader client.Reader,
dtClient dtclient.Client,
) *activeGateUpdater {
return &activeGateUpdater{
dynakube: dynakube,
dynakubeV1beta3: dynakubeV1beta3,
apiReader: apiReader,
dtClient: dtClient,
dynakube: dynakube,
apiReader: apiReader,
dtClient: dtClient,
}
}

Expand All @@ -43,7 +39,7 @@ func (updater activeGateUpdater) Name() string {
}

func (updater activeGateUpdater) IsEnabled() bool {
if updater.dynakubeV1beta3.NeedsActiveGate() {
if updater.dynakube.NeedsActiveGate() {
return true
}

Expand Down
20 changes: 5 additions & 15 deletions pkg/controllers/dynakube/version/activegate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import (

"github.com/Dynatrace/dynatrace-operator/pkg/api/scheme/fake"
"github.com/Dynatrace/dynatrace-operator/pkg/api/status"
"github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta2/dynakube"
dynatracev1beta3 "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube"
"github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube"
dtclient "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace"
dtclientmock "github.com/Dynatrace/dynatrace-operator/test/mocks/pkg/clients/dynatrace"
"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -39,14 +38,11 @@ func TestActiveGateUpdater(t *testing.T) {
},
},
}
dynakubeV1beta3 := &dynatracev1beta3.DynaKube{}
err := dynakubeV1beta3.ConvertFrom(dk)
require.NoError(t, err)

mockClient := dtclientmock.NewClient(t)
mockActiveGateImageInfo(mockClient, testImage)

updater := newActiveGateUpdater(dk, dynakubeV1beta3, fake.NewClient(), mockClient)
updater := newActiveGateUpdater(dk, fake.NewClient(), mockClient)

assert.Equal(t, "activegate", updater.Name())
assert.True(t, updater.IsEnabled())
Expand Down Expand Up @@ -76,19 +72,16 @@ func TestActiveGateUseDefault(t *testing.T) {
},
},
}
dynakubeV1beta3 := &dynatracev1beta3.DynaKube{}
err := dynakubeV1beta3.ConvertFrom(dk)
require.NoError(t, err)

expectedVersion := "1.2.3.4-5"
expectedImage := dk.DefaultActiveGateImage(expectedVersion)
mockClient := dtclientmock.NewClient(t)

mockClient.On("GetLatestActiveGateVersion", mock.AnythingOfType("context.backgroundCtx"), mock.Anything).Return(expectedVersion, nil)

updater := newActiveGateUpdater(dk, dynakubeV1beta3, fake.NewClient(), mockClient)
updater := newActiveGateUpdater(dk, fake.NewClient(), mockClient)

err = updater.UseTenantRegistry(context.Background())
err := updater.UseTenantRegistry(context.Background())
require.NoError(t, err)
assert.Equal(t, expectedImage, dk.Status.ActiveGate.ImageID)
assert.Equal(t, expectedVersion, dk.Status.ActiveGate.Version)
Expand All @@ -106,11 +99,8 @@ func TestActiveGateIsEnabled(t *testing.T) {
},
},
}
dynakubeV1beta3 := &dynatracev1beta3.DynaKube{}
err := dynakubeV1beta3.ConvertFrom(dk)
require.NoError(t, err)

updater := newActiveGateUpdater(dk, dynakubeV1beta3, nil, nil)
updater := newActiveGateUpdater(dk, nil, nil)

isEnabled := updater.IsEnabled()
require.False(t, isEnabled)
Expand Down
12 changes: 6 additions & 6 deletions pkg/controllers/dynakube/version/codemodules.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"

"github.com/Dynatrace/dynatrace-operator/pkg/api/status"
dynatracev1beta2 "github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta2/dynakube"
"github.com/Dynatrace/dynatrace-operator/pkg/api/v1beta3/dynakube"
dtclient "github.com/Dynatrace/dynatrace-operator/pkg/clients/dynatrace"
"github.com/Dynatrace/dynatrace-operator/pkg/util/conditions"
"k8s.io/apimachinery/pkg/api/meta"
Expand All @@ -15,13 +15,13 @@ const (
)

type codeModulesUpdater struct {
dynakube *dynatracev1beta2.DynaKube
dynakube *dynakube.DynaKube
dtClient dtclient.Client
}

func newCodeModulesUpdater(dynakube *dynatracev1beta2.DynaKube, dtClient dtclient.Client) *codeModulesUpdater {
func newCodeModulesUpdater(dk *dynakube.DynaKube, dtClient dtclient.Client) *codeModulesUpdater {
return &codeModulesUpdater{
dynakube: dynakube,
dynakube: dk,
dtClient: dtClient,
}
}
Expand Down Expand Up @@ -87,7 +87,7 @@ func (updater *codeModulesUpdater) CheckForDowngrade(_ string) (bool, error) {
func (updater *codeModulesUpdater) UseTenantRegistry(ctx context.Context) error {
customVersion := updater.CustomVersion()
if customVersion != "" {
updater.dynakube.Status.CodeModules = dynatracev1beta2.CodeModulesStatus{
updater.dynakube.Status.CodeModules = dynakube.CodeModulesStatus{
VersionStatus: status.VersionStatus{
Version: customVersion,
},
Expand All @@ -106,7 +106,7 @@ func (updater *codeModulesUpdater) UseTenantRegistry(ctx context.Context) error
return err
}

updater.dynakube.Status.CodeModules = dynatracev1beta2.CodeModulesStatus{
updater.dynakube.Status.CodeModules = dynakube.CodeModulesStatus{
VersionStatus: status.VersionStatus{
Version: latestAgentVersionUnixPaas,
},
Expand Down
Loading

0 comments on commit c3c709b

Please sign in to comment.