@@ -10,8 +10,10 @@ package main
1010
1111import (
1212 "context"
13+ "fmt"
1314 "os"
1415 "os/signal"
16+ "strings"
1517 "syscall"
1618 "time"
1719
@@ -69,18 +71,19 @@ func main() {
6971 ctx , cancel := context .WithCancel (context .Background ())
7072 defer cancel ()
7173
72- hostname := os .Getenv ("HOSTNAME" )
73- if hostname == "" {
74- log .Err ("hostname is empty" )
74+ engProps , err := getEngineProperties (ctx , dockerCLI , cfg .Global .InstanceID )
75+ if err != nil {
76+ log .Err ("failed to get Database Lab Engine properties:" , err .Error ())
77+ return
7578 }
7679
77- internalNetworkID , err := networks .Setup (ctx , dockerCLI , cfg .Global .InstanceID , hostname )
80+ internalNetworkID , err := networks .Setup (ctx , dockerCLI , cfg .Global .InstanceID , engProps . ContainerName )
7881 if err != nil {
7982 log .Errf (err .Error ())
8083 return
8184 }
8285
83- defer networks .Stop (dockerCLI , internalNetworkID , hostname )
86+ defer networks .Stop (dockerCLI , internalNetworkID , engProps . ContainerName )
8487
8588 // Create a platform service to make requests to Platform.
8689 platformSvc , err := platform .New (ctx , cfg .Platform )
@@ -100,17 +103,17 @@ func main() {
100103 shutdownCtx , shutdownCancel := context .WithTimeout (context .Background (), shutdownTimeout )
101104 defer shutdownCancel ()
102105
103- shutdownDatabaseLabEngine (shutdownCtx , dockerCLI , cfg . Global , pm .First ().Pool ())
106+ shutdownDatabaseLabEngine (shutdownCtx , dockerCLI , engProps , pm .First ().Pool ())
104107 }
105108
106- tm , err := telemetry .New (cfg .Global )
109+ tm , err := telemetry .New (cfg .Global , engProps )
107110 if err != nil {
108111 log .Errf (errors .WithMessage (err , "failed to initialize a telemetry service" ).Error ())
109112 return
110113 }
111114
112115 // Create a new retrieval service to prepare a data directory and start snapshotting.
113- retrievalSvc := retrieval .New (cfg , dockerCLI , pm , tm , runner )
116+ retrievalSvc := retrieval .New (cfg , engProps , dockerCLI , pm , tm , runner )
114117
115118 if err := retrievalSvc .Run (ctx ); err != nil {
116119 log .Err ("Failed to run the data retrieval service:" , err )
@@ -149,7 +152,7 @@ func main() {
149152 Restore : retrievalSvc .CollectRestoreTelemetry (),
150153 })
151154
152- server := srv .NewServer (& cfg .Server , & cfg .Global , cloningSvc , retrievalSvc , platformSvc , dockerCLI , obs , est , pm , tm )
155+ server := srv .NewServer (& cfg .Server , & cfg .Global , engProps , cloningSvc , retrievalSvc , platformSvc , dockerCLI , obs , est , pm , tm )
153156 shutdownCh := setShutdownListener ()
154157
155158 go setReloadListener (ctx , provisionSvc , tm , retrievalSvc , pm , cloningSvc , platformSvc , est , server )
@@ -173,11 +176,30 @@ func main() {
173176 log .Msg (err )
174177 }
175178
176- shutdownDatabaseLabEngine (shutdownCtx , dockerCLI , cfg . Global , pm .First ().Pool ())
179+ shutdownDatabaseLabEngine (shutdownCtx , dockerCLI , engProps , pm .First ().Pool ())
177180 cloningSvc .SaveClonesState ()
178181 tm .SendEvent (ctx , telemetry .EngineStoppedEvent , telemetry.EngineStopped {Uptime : server .Uptime ()})
179182}
180183
184+ func getEngineProperties (ctx context.Context , dockerCLI * client.Client , instanceID string ) (global.EngineProps , error ) {
185+ hostname := os .Getenv ("HOSTNAME" )
186+ if hostname == "" {
187+ return global.EngineProps {}, errors .New ("hostname is empty" )
188+ }
189+
190+ dleContainer , err := dockerCLI .ContainerInspect (ctx , hostname )
191+ if err != nil {
192+ return global.EngineProps {}, fmt .Errorf ("failed to inspect DLE container: %w" , err )
193+ }
194+
195+ engProps := global.EngineProps {
196+ InstanceID : instanceID ,
197+ ContainerName : strings .Trim (dleContainer .Name , "/" ),
198+ }
199+
200+ return engProps , nil
201+ }
202+
181203func reloadConfig (ctx context.Context , provisionSvc * provision.Provisioner , tm * telemetry.Agent , retrievalSvc * retrieval.Retrieval ,
182204 pm * pool.Manager , cloningSvc * cloning.Base , platformSvc * platform.Service , est * estimator.Estimator , server * srv.Server ) error {
183205 cfg , err := config .LoadConfiguration ()
@@ -241,10 +263,10 @@ func setShutdownListener() chan os.Signal {
241263 return c
242264}
243265
244- func shutdownDatabaseLabEngine (ctx context.Context , dockerCLI * client.Client , global global.Config , fsp * resources.Pool ) {
266+ func shutdownDatabaseLabEngine (ctx context.Context , dockerCLI * client.Client , engProps global.EngineProps , fsp * resources.Pool ) {
245267 log .Msg ("Stopping control containers" )
246268
247- if err := cont .StopControlContainers (ctx , dockerCLI , global .InstanceID , fsp .DataDir ()); err != nil {
269+ if err := cont .StopControlContainers (ctx , dockerCLI , engProps .InstanceID , fsp .DataDir ()); err != nil {
248270 log .Err ("Failed to stop control containers" , err )
249271 }
250272
0 commit comments