[VOL-3187]Pass Context down the execution call hierarchy across ofagent codebase
Change-Id: Ia5f2fa1509beefe0ddc427b83e39d2702782db8f
diff --git a/cmd/ofagent/main.go b/cmd/ofagent/main.go
index 14b38ed..911d99e 100644
--- a/cmd/ofagent/main.go
+++ b/cmd/ofagent/main.go
@@ -45,13 +45,13 @@
}
func setLogConfig(ctx context.Context, kvStoreAddress, kvStoreType string, kvStoreTimeout time.Duration) (kvstore.Client, error) {
- client, err := kvstore.NewEtcdClient(kvStoreAddress, kvStoreTimeout, log.WarnLevel)
+ client, err := kvstore.NewEtcdClient(ctx, kvStoreAddress, kvStoreTimeout, log.WarnLevel)
if err != nil {
return nil, err
}
- cm := conf.NewConfigManager(client, kvStoreType, kvStoreAddress, kvStoreTimeout)
+ cm := conf.NewConfigManager(ctx, client, kvStoreType, kvStoreAddress, kvStoreTimeout)
go conf.StartLogLevelConfigProcessing(cm, ctx)
return client, nil
}
@@ -62,10 +62,10 @@
if kvClient != nil {
// Release all reservations
if err := kvClient.ReleaseAllReservations(ctx); err != nil {
- logger.Infow("fail-to-release-all-reservations", log.Fields{"error": err})
+ logger.Infow(ctx, "fail-to-release-all-reservations", log.Fields{"error": err})
}
// Close the DB connection
- kvClient.Close()
+ kvClient.Close(ctx)
}
}
@@ -84,11 +84,18 @@
printBanner()
}
+ /*
+ * Create a context which to start the services used by the applicaiton
+ * and attach the probe to that context
+ */
+ p := &probe.Probe{}
+ ctx := context.WithValue(context.Background(), probe.ProbeContextKey, p)
+
// Setup logging
logLevel, err := log.StringToLogLevel(config.LogLevel)
if err != nil {
- logger.Fatalf("Cannot setup logging, %s", err)
+ logger.Fatalf(ctx, "Cannot setup logging, %s", err)
}
// Setup default logger - applies for packages that do not have specific logger set
@@ -109,7 +116,7 @@
defer func() {
err := log.CleanUp()
if err != nil {
- logger.Errorw("unable-to-flush-any-buffered-log-entries", log.Fields{"error": err})
+ logger.Errorw(ctx, "unable-to-flush-any-buffered-log-entries", log.Fields{"error": err})
}
}()
@@ -118,21 +125,14 @@
* is done in the main function so just in case the main starts multiple other
* objects there can be a single probe end point for the process.
*/
- p := &probe.Probe{}
- go p.ListenAndServe(config.ProbeEndPoint)
-
- /*
- * Create a context which to start the services used by the applicaiton
- * and attach the probe to that context
- */
- ctx := context.WithValue(context.Background(), probe.ProbeContextKey, p)
+ go p.ListenAndServe(ctx, config.ProbeEndPoint)
client, err := setLogConfig(ctx, config.KVStoreAddress, config.KVStoreType, config.KVStoreTimeout)
if err != nil {
- logger.Warnw("unable-to-create-kvstore-client", log.Fields{"error": err})
+ logger.Warnw(ctx, "unable-to-create-kvstore-client", log.Fields{"error": err})
}
- ofa, err := ofagent.NewOFAgent(&ofagent.OFAgent{
+ ofa, err := ofagent.NewOFAgent(ctx, &ofagent.OFAgent{
OFControllerEndPoints: config.OFControllerEndPoints,
VolthaApiEndPoint: config.VolthaApiEndPoint,
DeviceListRefreshInterval: config.DeviceListRefreshInterval,
@@ -140,7 +140,7 @@
ConnectionRetryDelay: config.ConnectionRetryDelay,
})
if err != nil {
- logger.Fatalw("failed-to-create-ofagent",
+ logger.Fatalw(ctx, "failed-to-create-ofagent",
log.Fields{
"error": err})
}