Skip to content

Commit 105c5be

Browse files
committed
draft experimental launch
Signed-off-by: jose.vazquez <[email protected]>
1 parent 9430b0b commit 105c5be

File tree

7 files changed

+773
-23
lines changed

7 files changed

+773
-23
lines changed

internal/cmd/main.go

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"log"
6+
"os"
7+
"os/exec"
8+
"os/signal"
9+
"syscall"
10+
)
11+
12+
func main() {
13+
// setupLog := ctrl.Log.WithName("experimental-launcher")
14+
15+
// Graceful shutdown context
16+
ctx, cancel := context.WithCancel(context.Background())
17+
defer cancel()
18+
19+
// Start experimental controllers
20+
// go func() {
21+
// setupLog.Info("Starting experimental controllers")
22+
// mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
23+
// Scheme: runtime.Scheme,
24+
// })
25+
// if err != nil {
26+
// setupLog.Error(err, "unable to start manager for experimental controllers")
27+
// cancel()
28+
// os.Exit(1)
29+
// }
30+
31+
// // Register experimental controllers
32+
// if err := (&experimental.ExperimentalController{}).SetupWithManager(mgr); err != nil {
33+
// setupLog.Error(err, "unable to setup experimental controller")
34+
// cancel()
35+
// os.Exit(1)
36+
// }
37+
38+
// // Start the experimental manager
39+
// if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
40+
// setupLog.Error(err, "problem running experimental manager")
41+
// cancel()
42+
// os.Exit(1)
43+
// }
44+
// }()
45+
46+
// Launch production binary as a subprocess
47+
cmd := exec.Command("./my-operator-production-binary") // Path to your production binary
48+
cmd.Stdout = os.Stdout
49+
cmd.Stderr = os.Stderr
50+
51+
// Start the subprocess
52+
if err := cmd.Start(); err != nil {
53+
log.Fatalf("Failed to start production binary: %v", err)
54+
cancel()
55+
os.Exit(1)
56+
}
57+
58+
log.Println("Experimental launcher is running. Production binary started.")
59+
60+
// Handle OS signals for graceful shutdown
61+
signalCh := make(chan os.Signal, 1)
62+
signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM)
63+
64+
select {
65+
case <-signalCh: // If the launcher gets terminated
66+
log.Println("Received termination signal. Stopping everything...")
67+
68+
// Stop the experimental controllers by calling cancel()
69+
cancel()
70+
71+
// Kill the production subprocess
72+
if err := cmd.Process.Signal(syscall.SIGTERM); err != nil {
73+
log.Printf("Failed to terminate production subprocess: %v", err)
74+
}
75+
76+
case <-ctx.Done(): // If the experimental controllers fail
77+
log.Println("Experimental controllers stopped. Terminating...")
78+
if err := cmd.Process.Kill(); err != nil {
79+
log.Printf("Failed to force-kill production subprocess: %v", err)
80+
}
81+
}
82+
83+
// Wait for subprocess to fully shut down
84+
_ = cmd.Wait()
85+
86+
log.Println("Experimental launcher shut down completely.")
87+
}
88+
89+
// func startExperimentalControllers(setupLog logr.Logger, cancel context.CancelCauseFunc) error {
90+
// setupLog.Info("Starting experimental controllers")
91+
// mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
92+
// Scheme: ctrl.Scheme,
93+
// })
94+
// if err != nil {
95+
// return fmt.Errorf("failed to start experimentar controller manager: %w", err)
96+
// }
97+
98+
// // TODO Register experimental controllers
99+
// if err := (&experimental.ExperimentalController{}).SetupWithManager(mgr); err != nil {
100+
// return fmt.Errorf("failed to setup experimental controller: %w", err)
101+
// }
102+
103+
// go func() {
104+
// if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
105+
// setupLog.Error(err, "problem running experimental manager")
106+
// cancel()
107+
// os.Exit(1)
108+
// }
109+
// }()
110+
// return nil
111+
// }

internal/controller/atlasthirdpartyintegrations/handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func (h *AtlasThirdPartyIntegrationHandler) HandleCreated(ctx context.Context, i
8484

8585
func (h *AtlasThirdPartyIntegrationHandler) handleIdle(ctx context.Context, integration *akov2next.AtlasThirdPartyIntegration) (ctrlstate.Result, error) {
8686
// TODO skew detection here
87-
87+
8888
return ctrlstate.Result{}, nil
8989
}
9090

0 commit comments

Comments
 (0)