#!py import logging def status(): return __salt__['cmd.run']('/usr/sbin/so-status') def mysql_conn(retry): log = logging.getLogger(__name__) from time import sleep try: from MySQLdb import _mysql except ImportError as e: log.error(e) return False mainint = __salt__['pillar.get']('host:mainint') ip_arr = __salt__['grains.get']('ip4_interfaces').get(mainint) mysql_up = False if len(ip_arr) == 1: mainip = ip_arr[0] if not(retry >= 1): log.debug('`retry` set to value below 1, resetting it to 1 to prevent errors.') retry = 1 for i in range(0, retry): log.debug(f'Connection attempt {i+1}') try: db = _mysql.connect( host=mainip, user='root', passwd=__salt__['pillar.get']('secrets:mysql') ) log.debug(f'Connected to MySQL server on {mainip} after {i+1} attempts.') db.query("""SELECT 1;""") log.debug(f'Successfully completed query against MySQL server on {mainip}') db.close() mysql_up = True break except _mysql.OperationalError as e: log.debug(e) except Exception as e: log.error('Unexpected error occured.') log.error(e) break sleep(1) if not mysql_up: log.error(f'Could not connect to MySQL server on {mainip} after {retry} attempts.') else: log.error(f'Main interface {mainint} has more than one IP address assigned to it, which is not supported.') log.debug(f'{mainint}:') for addr in ip_arr: log.debug(f' - {addr}') return mysql_up