Added configuration option to change the probe's listen address.
Change-Id: I7e8aa7bf4a4756f12211e7108cabcdc86aacd78a
(cherry picked from commit c4618836a6e8e5995dd9f5a7478901eac66a7b0e)
diff --git a/common/probe/probe.go b/common/probe/probe.go
index fdb07e8..8a8e485 100644
--- a/common/probe/probe.go
+++ b/common/probe/probe.go
@@ -207,7 +207,7 @@
}
// ListenAndServe implements 3 HTTP endpoints on the given port for healthz, readz, and detailz. Returns only on error
-func (p *Probe) ListenAndServe(port int) {
+func (p *Probe) ListenAndServe(address string) {
mux := http.NewServeMux()
// Returns the result of the readyFunc calculation
@@ -219,7 +219,7 @@
// Returns the details of the services and their status as JSON
mux.HandleFunc("/detailz", p.detailzFunc)
s := &http.Server{
- Addr: fmt.Sprintf(":%d", port),
+ Addr: address,
Handler: mux,
}
log.Fatal(s.ListenAndServe())
diff --git a/ro_core/config/config.go b/ro_core/config/config.go
index be78228..28cde01 100644
--- a/ro_core/config/config.go
+++ b/ro_core/config/config.go
@@ -43,6 +43,7 @@
default_ROCoreCert = "pki/voltha.crt"
default_ROCoreCA = "pki/voltha-CA.pem"
default_Affinity_Router_Topic = "affinityRouter"
+ default_ProbeHost = ""
default_ProbePort = 8080
)
@@ -66,6 +67,7 @@
ROCoreCert string
ROCoreCA string
AffinityRouterTopic string
+ ProbeHost string
ProbePort int
}
@@ -93,6 +95,7 @@
ROCoreCert: default_ROCoreCert,
ROCoreCA: default_ROCoreCA,
AffinityRouterTopic: default_Affinity_Router_Topic,
+ ProbeHost: default_ProbeHost,
ProbePort: default_ProbePort,
}
return &roCoreFlag
@@ -142,6 +145,9 @@
help = fmt.Sprintf("Show version information and exit")
flag.BoolVar(&cf.DisplayVersionOnly, "version", default_DisplayVersionOnly, help)
+ help = fmt.Sprintf("The address on which to listen to answer liveness and readiness probe queries over HTTP.")
+ flag.StringVar(&(cf.ProbeHost), "probe_host", default_ProbeHost, help)
+
help = fmt.Sprintf("The port on which to listen to answer liveness and readiness probe queries over HTTP.")
flag.IntVar(&(cf.ProbePort), "probe_port", default_ProbePort, help)
diff --git a/ro_core/main.go b/ro_core/main.go
index 27ada02..a8508b8 100644
--- a/ro_core/main.go
+++ b/ro_core/main.go
@@ -241,7 +241,7 @@
* objects there can be a single probe end point for the process.
*/
p := &probe.Probe{}
- go p.ListenAndServe(ro.config.ProbePort)
+ go p.ListenAndServe(fmt.Sprintf("%s:%d", ro.config.ProbeHost, ro.config.ProbePort))
// Add the probe to the context to pass to all the services started
probeCtx := context.WithValue(ctx, probe.ProbeContextKey, p)
diff --git a/rw_core/config/config.go b/rw_core/config/config.go
index f9f1d3e..5f4a0e0 100644
--- a/rw_core/config/config.go
+++ b/rw_core/config/config.go
@@ -54,6 +54,7 @@
default_CorePairTopic = "rwcore_1"
default_MaxConnectionRetries = -1 // retries forever
default_ConnectionRetryInterval = 2 // in seconds
+ default_ProbeHost = ""
default_ProbePort = 8080
)
@@ -89,6 +90,7 @@
CorePairTopic string
MaxConnectionRetries int
ConnectionRetryInterval int
+ ProbeHost string
ProbePort int
}
@@ -128,6 +130,7 @@
CorePairTopic: default_CorePairTopic,
MaxConnectionRetries: default_MaxConnectionRetries,
ConnectionRetryInterval: default_ConnectionRetryInterval,
+ ProbeHost: default_ProbeHost,
ProbePort: default_ProbePort,
}
return &rwCoreFlag
@@ -216,6 +219,9 @@
help = fmt.Sprintf("The number of seconds between each connection retry attempt ")
flag.IntVar(&(cf.ConnectionRetryInterval), "connection_retry_interval", default_ConnectionRetryInterval, help)
+ help = fmt.Sprintf("The host on which to listen to answer liveness and readiness probe queries over HTTP.")
+ flag.StringVar(&(cf.ProbeHost), "probe_host", default_ProbeHost, help)
+
help = fmt.Sprintf("The port on which to listen to answer liveness and readiness probe queries over HTTP.")
flag.IntVar(&(cf.ProbePort), "probe_port", default_ProbePort, help)
diff --git a/rw_core/main.go b/rw_core/main.go
index 6f06576..2311029 100644
--- a/rw_core/main.go
+++ b/rw_core/main.go
@@ -276,7 +276,7 @@
* objects there can be a single probe end point for the process.
*/
p := &probe.Probe{}
- go p.ListenAndServe(rw.config.ProbePort)
+ go p.ListenAndServe(fmt.Sprintf("%s:%d", rw.config.ProbeHost, rw.config.ProbePort))
// Add the probe to the context to pass to all the services started
probeCtx := context.WithValue(ctx, probe.ProbeContextKey, p)