VOL-1727: K8S Liveness and Readiness Probes Added

Change-Id: I18748ebd35286d54d0bb9f0b083f3c69b97abdb5
diff --git a/python/ofagent/main.py b/python/ofagent/main.py
index fa2b5c0..58afe15 100755
--- a/python/ofagent/main.py
+++ b/python/ofagent/main.py
@@ -18,6 +18,9 @@
 import os
 
 import yaml
+import SocketServer
+
+from probe import Probe
 from twisted.internet import reactor
 from twisted.internet.defer import inlineCallbacks
 
@@ -30,6 +33,7 @@
     config=os.environ.get('CONFIG', './ofagent.yml'),
     consul=os.environ.get('CONSUL', 'localhost:8500'),
     controller=os.environ.get('CONTROLLER', 'localhost:6653'),
+    probe=os.environ.get('PROBE', ':8080'),
     external_host_address=os.environ.get('EXTERNAL_HOST_ADDRESS',
                                          get_my_primary_local_ipv4()),
     grpc_endpoint=os.environ.get('GRPC_ENDPOINT', 'localhost:50055'),
@@ -71,6 +75,12 @@
         default=defs['controller'],
         help=_help)
 
+    _help = '<hostname>:<port> for liveness and readiness probes (default: %s)' % defs['probe']
+    parser.add_argument(
+        '-P', '--probe', dest='probe', action='store',
+        default=defs['probe'],
+        help=_help)
+
     _help = ('<hostname> or <ip> at which ofagent is reachable from outside '
              'the cluster (default: %s)' % defs['external_host_address'])
     parser.add_argument('-E', '--external-host-address',
@@ -282,8 +292,15 @@
 
         reactor.addSystemEventTrigger('before', 'shutdown',
                                       self.shutdown_components)
+        reactor.callInThread(self.start_probe)
         reactor.run()
 
+    def start_probe(self):
+        args = self.args
+        host = args.probe.split(':')[0]
+        port = args.probe.split(':')[1]
+        server = SocketServer.TCPServer((host, int(port)), Probe)
+        server.serve_forever()
 
 if __name__ == '__main__':
     Main().start()