[VOL-2099] Modified RO Core PoD Readiness state to reflect KVStore connection status

Change-Id: I38998fe75a99769ea24b72e2e0bb19d8c08e0529
diff --git a/ro_core/config/config.go b/ro_core/config/config.go
index d320b13..eea6080 100644
--- a/ro_core/config/config.go
+++ b/ro_core/config/config.go
@@ -20,6 +20,7 @@
 	"fmt"
 	"github.com/opencord/voltha-lib-go/v2/pkg/log"
 	"os"
+	"time"
 )
 
 // RO Core service default constants
@@ -45,30 +46,34 @@
 	default_Affinity_Router_Topic = "affinityRouter"
 	default_ProbeHost             = ""
 	default_ProbePort             = 8080
+	default_LiveProbeInterval     = 60 * time.Second
+	default_NotLiveProbeInterval  = 5 * time.Second // Probe more frequently to detect Recovery early
 )
 
 // ROCoreFlags represents the set of configurations used by the read-only core service
 type ROCoreFlags struct {
 	// Command line parameters
-	InstanceID          string
-	ROCoreEndpoint      string
-	GrpcHost            string
-	GrpcPort            int
-	KVStoreType         string
-	KVStoreTimeout      int // in seconds
-	KVStoreHost         string
-	KVStorePort         int
-	KVTxnKeyDelTime     int
-	CoreTopic           string
-	LogLevel            int
-	Banner              bool
-	DisplayVersionOnly  bool
-	ROCoreKey           string
-	ROCoreCert          string
-	ROCoreCA            string
-	AffinityRouterTopic string
-	ProbeHost           string
-	ProbePort           int
+	InstanceID           string
+	ROCoreEndpoint       string
+	GrpcHost             string
+	GrpcPort             int
+	KVStoreType          string
+	KVStoreTimeout       int // in seconds
+	KVStoreHost          string
+	KVStorePort          int
+	KVTxnKeyDelTime      int
+	CoreTopic            string
+	LogLevel             int
+	Banner               bool
+	DisplayVersionOnly   bool
+	ROCoreKey            string
+	ROCoreCert           string
+	ROCoreCA             string
+	AffinityRouterTopic  string
+	ProbeHost            string
+	ProbePort            int
+	LiveProbeInterval    time.Duration
+	NotLiveProbeInterval time.Duration
 }
 
 func init() {
@@ -78,25 +83,27 @@
 // NewROCoreFlags returns a new ROCore config
 func NewROCoreFlags() *ROCoreFlags {
 	var roCoreFlag = ROCoreFlags{ // Default values
-		InstanceID:          default_InstanceID,
-		ROCoreEndpoint:      default_ROCoreEndpoint,
-		GrpcHost:            default_GrpcHost,
-		GrpcPort:            default_GrpcPort,
-		KVStoreType:         default_KVStoreType,
-		KVStoreTimeout:      default_KVStoreTimeout,
-		KVStoreHost:         default_KVStoreHost,
-		KVStorePort:         default_KVStorePort,
-		KVTxnKeyDelTime:     default_KVTxnKeyDelTime,
-		CoreTopic:           default_CoreTopic,
-		LogLevel:            default_LogLevel,
-		Banner:              default_Banner,
-		DisplayVersionOnly:  default_DisplayVersionOnly,
-		ROCoreKey:           default_ROCoreKey,
-		ROCoreCert:          default_ROCoreCert,
-		ROCoreCA:            default_ROCoreCA,
-		AffinityRouterTopic: default_Affinity_Router_Topic,
-		ProbeHost:           default_ProbeHost,
-		ProbePort:           default_ProbePort,
+		InstanceID:           default_InstanceID,
+		ROCoreEndpoint:       default_ROCoreEndpoint,
+		GrpcHost:             default_GrpcHost,
+		GrpcPort:             default_GrpcPort,
+		KVStoreType:          default_KVStoreType,
+		KVStoreTimeout:       default_KVStoreTimeout,
+		KVStoreHost:          default_KVStoreHost,
+		KVStorePort:          default_KVStorePort,
+		KVTxnKeyDelTime:      default_KVTxnKeyDelTime,
+		CoreTopic:            default_CoreTopic,
+		LogLevel:             default_LogLevel,
+		Banner:               default_Banner,
+		DisplayVersionOnly:   default_DisplayVersionOnly,
+		ROCoreKey:            default_ROCoreKey,
+		ROCoreCert:           default_ROCoreCert,
+		ROCoreCA:             default_ROCoreCA,
+		AffinityRouterTopic:  default_Affinity_Router_Topic,
+		ProbeHost:            default_ProbeHost,
+		ProbePort:            default_ProbePort,
+		LiveProbeInterval:    default_LiveProbeInterval,
+		NotLiveProbeInterval: default_NotLiveProbeInterval,
 	}
 	return &roCoreFlag
 }
@@ -151,6 +158,12 @@
 	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)
 
+	help = fmt.Sprintf("Time interval between liveness probes while in a live state")
+	flag.DurationVar(&(cf.LiveProbeInterval), "live_probe_interval", default_LiveProbeInterval, help)
+
+	help = fmt.Sprintf("Time interval between liveness probes while in a not live state")
+	flag.DurationVar(&(cf.NotLiveProbeInterval), "not_live_probe_interval", default_NotLiveProbeInterval, help)
+
 	flag.Parse()
 
 	containerName := getContainerInfo()