Fix for bug 1433 - Exception when checking kafka status
[osm/MON.git] / osm_mon / cmd / common_functions.py
1 # -*- coding: utf-8 -*-
2
3 # This file is part of OSM Monitoring module
4
5 # Licensed under the Apache License, Version 2.0 (the "License"); you may
6 # not use this file except in compliance with the License. You may obtain
7 # a copy of the License at
8
9 # http://www.apache.org/licenses/LICENSE-2.0
10
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 # License for the specific language governing permissions and limitations
15 # under the License.
16
17 import pymongo
18 import time
19 import socket
20 import logging
21
22
23 def wait_till_core_services_are_ready(config, process_name="osm-mon", commondb_wait_time=5, kafka_wait_time=5):
24
25 logging.debug("wait_till_services_are_ready()")
26
27 if not config:
28 logging.info("Config information is not available")
29 return False
30
31 # Check if common-db is ready
32 while(True):
33 commondb_url = config.conf["database"].get("uri")
34 try:
35 commondb = pymongo.MongoClient(commondb_url)
36 commondb.server_info()
37 break
38 except Exception:
39 logging.info("{} process is waiting for commondb to come up...".format(process_name))
40 time.sleep(commondb_wait_time)
41
42 # Check if kafka is ready
43 while(True):
44 port_in_use = False
45 try:
46 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
47 if s.connect_ex(("kafka", int(config.conf["message"].get("port")))) == 0:
48 port_in_use = True
49 except Exception as e:
50 logging.info("Error when trying to get kafka status.")
51 logging.debug("Exception when trying to get kafka status: %s", str(e))
52 if port_in_use:
53 break
54 else:
55 logging.info("{} process is waiting for kafka to come up...".format(process_name))
56 time.sleep(kafka_wait_time)
57
58 return True