Skip to content

Commit 0fa07a0

Browse files
committed
fixup launcher
1 parent a50c28e commit 0fa07a0

File tree

2 files changed

+51
-11
lines changed

2 files changed

+51
-11
lines changed

internal/cmd/nextako/main.go

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,32 @@ import (
2929
"k8s.io/apimachinery/pkg/runtime"
3030
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
3131
ctrl "sigs.k8s.io/controller-runtime"
32+
"sigs.k8s.io/controller-runtime/pkg/client"
3233
ctrlog "sigs.k8s.io/controller-runtime/pkg/log"
3334
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
3435

36+
"github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlas"
37+
"github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/kube"
3538
akov2next "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/nextapi/v1"
3639
)
3740

41+
const (
42+
dryRun = false
43+
)
44+
3845
func main() {
3946
akoPath, ok := os.LookupEnv("AKO_BINARY_PATH")
4047
if !ok {
4148
log.Fatalf("AKO_BINARY_PATH must be set and point to the AKO binary path")
4249
}
50+
domain := os.Getenv("MCLI_OPS_MANAGER_URL")
51+
if domain == "" {
52+
domain = "https://cloud-qa.mongodb.com"
53+
}
4354

4455
ctx, cancel := context.WithCancel(context.Background())
4556
defer cancel()
46-
if err := startExperimentalControllers(cancel); err != nil {
57+
if err := startExperimentalControllers(cancel, domain); err != nil {
4758
log.Fatalf("Failed to launch experimental controllers: %v", err)
4859
}
4960

@@ -57,7 +68,7 @@ func main() {
5768
handleShutdown(ctx, cancel, akoCmd)
5869
}
5970

60-
func startExperimentalControllers(cancel context.CancelFunc) error {
71+
func startExperimentalControllers(cancel context.CancelFunc, domain string) error {
6172
setupLog := ctrl.Log.WithName("experimental-launcher")
6273
setupLog.Info("Starting experimental controllers")
6374

@@ -70,9 +81,11 @@ func startExperimentalControllers(cancel context.CancelFunc) error {
7081
return fmt.Errorf("failed to get kube config (is cluster running?): %w", err)
7182
}
7283

73-
if err := setupControllerRuntimeLogger(); err != nil {
84+
logger, err := newRootLogger()
85+
if err != nil {
7486
return err
7587
}
88+
ctrlog.SetLogger(zapr.NewLogger(logger))
7689
mgr, err := ctrl.NewManager(kubeCfg, ctrl.Options{
7790
Scheme: experimentalScheme,
7891
Metrics: metricsserver.Options{BindAddress: ":8090"},
@@ -82,8 +95,10 @@ func startExperimentalControllers(cancel context.CancelFunc) error {
8295
return fmt.Errorf("failed to start experimental controller manager: %w", err)
8396
}
8497

98+
atlasProvider := atlas.NewProductionProvider(domain, dryRun)
99+
secretRef := operatorGlobalKeySecret()
85100
for _, reconciler := range experimentalReconcilers {
86-
if err := reconciler.register(mgr); err != nil {
101+
if err := reconciler.register(mgr, atlasProvider, logger, secretRef); err != nil {
87102
return fmt.Errorf("failed to register experimental %s: %w", reconciler.name, err)
88103
}
89104
log.Printf("Experimental %s registered", reconciler.name)
@@ -98,13 +113,12 @@ func startExperimentalControllers(cancel context.CancelFunc) error {
98113
return nil
99114
}
100115

101-
func setupControllerRuntimeLogger() error {
116+
func newRootLogger() (*zap.Logger, error) {
102117
zapLog, err := zap.NewDevelopment()
103118
if err != nil {
104-
return fmt.Errorf("failed to initialize logger: %w", err)
119+
return nil, fmt.Errorf("failed to initialize logger: %w", err)
105120
}
106-
ctrlog.SetLogger(zapr.NewLogger(zapLog))
107-
return nil
121+
return zapLog, nil
108122
}
109123

110124
func startAKO(akoPath string) (*exec.Cmd, error) {
@@ -139,3 +153,22 @@ func handleShutdown(ctx context.Context, cancel context.CancelFunc, akoCmd *exec
139153
_ = akoCmd.Wait()
140154
log.Println("Experimental launcher shut down completely.")
141155
}
156+
157+
func operatorGlobalKeySecret() client.ObjectKey {
158+
operatorPodName := os.Getenv("OPERATOR_POD_NAME")
159+
if operatorPodName == "" {
160+
log.Fatal(`"OPERATOR_POD_NAME" environment variable must be set!`)
161+
}
162+
deploymentName, err := kube.ParseDeploymentNameFromPodName(operatorPodName)
163+
if err != nil {
164+
log.Fatalf(`Failed to get Operator Deployment name from "OPERATOR_POD_NAME" environment variable: %s`, err.Error())
165+
}
166+
secretName := deploymentName + "-api-key"
167+
168+
operatorNamespace := os.Getenv("OPERATOR_NAMESPACE")
169+
if operatorNamespace == "" {
170+
log.Fatal(`"OPERATOR_NAMESPACE" environment variable must be set!`)
171+
}
172+
173+
return client.ObjectKey{Namespace: operatorNamespace, Name: secretName}
174+
}

internal/cmd/nextako/registrations.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@
1515
package main
1616

1717
import (
18+
"go.uber.org/zap"
1819
ctrl "sigs.k8s.io/controller-runtime"
20+
"sigs.k8s.io/controller-runtime/pkg/client"
1921

22+
"github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlas"
2023
integrations "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasthirdpartyintegrations"
2124
)
2225

23-
type registerReconcilerFn func(ctrl.Manager) error
26+
type registerReconcilerFn func(ctrl.Manager, atlas.Provider, *zap.Logger, client.ObjectKey) error
2427

2528
type experimentalReconcilerInitSpec struct {
2629
name string
@@ -30,8 +33,12 @@ type experimentalReconcilerInitSpec struct {
3033
var experimentalReconcilers = []experimentalReconcilerInitSpec{
3134
{
3235
name: "AtlasThirdPartyIntegrationsReconciler",
33-
register: func(mgr ctrl.Manager) error {
34-
return integrations.NewAtlasThirdPartyIntegrationsReconciler().SetupWithManager(mgr)
36+
register: func(mgr ctrl.Manager, provider atlas.Provider, logger *zap.Logger, globalSecretRef client.ObjectKey) error {
37+
return integrations.NewAtlasThirdPartyIntegrationsReconciler(
38+
provider,
39+
logger,
40+
globalSecretRef,
41+
).SetupWithManager(mgr)
3542
},
3643
},
3744
}

0 commit comments

Comments
 (0)