diff --git a/python/ofagent/connection_mgr.py b/python/ofagent/connection_mgr.py
index 7e17613..a141946 100755
--- a/python/ofagent/connection_mgr.py
+++ b/python/ofagent/connection_mgr.py
@@ -37,6 +37,11 @@
 # _ = third_party
 
 class ConnectionManager(object):
+    running = False
+    channel = None
+    subscription = None
+    grpc_client = None
+
     def __init__(self, consul_endpoint,
                  vcore_endpoint, vcore_grpc_timeout, vcore_binding_key,
                  vcore_transaction_key, controller_endpoints, instance_id,
@@ -78,6 +83,7 @@
         log.debug('starting')
 
         self.running = True
+        ConnectionManager.running = True
 
         # Get a subscription to vcore
         reactor.callInThread(self.get_vcore_subscription)
@@ -89,6 +95,16 @@
 
         return self
 
+    @classmethod
+    def liveness_probe(cls):
+        # Pod restarts when liveness condition fails
+        return ConnectionManager.running
+
+    @classmethod
+    def readiness_probe(cls):
+        # Pod is isolated when readiness condition fails
+        return bool(ConnectionManager.channel and ConnectionManager.subscription and ConnectionManager.grpc_client)
+
     def stop(self):
         log.debug('stopping')
         # clean up all controller connections
@@ -126,11 +142,14 @@
         if self.channel is not None:
             del self.channel
 
-        self.is_alive = False
         self.channel = None
         self.subscription = None
         self.grpc_client = None
 
+        ConnectionManager.channel = None
+        ConnectionManager.subscription = None
+        ConnectionManager.grpc_client = None
+
         log.debug('stop-reset-grpc-attributes')
 
     def _assign_grpc_attributes(self):
@@ -144,7 +163,9 @@
 
         # Establish a connection to the vcore GRPC server
         self.channel = grpc.insecure_channel('{}:{}'.format(host, port))
-        self.is_alive = True
+
+        # For Readiness probe
+        ConnectionManager.channel = self.channel
 
         log.debug('stop-assign-grpc-attributes')
 
@@ -167,6 +188,9 @@
                 subscription = yield self.grpc_client.subscribe(
                     OfAgentSubscriber(ofagent_id=container_name))
 
+                #For Readiness probes
+                ConnectionManager.subscription =  subscription
+                ConnectionManager.grpc_client = self.grpc_client
                 # If the subscriber id matches the current instance
                 # ... then the subscription has succeeded
                 if subscription is not None and subscription.ofagent_id == container_name:
