docs: def _setup_tunnel(
              self):
          """
          *setup ssh tunnel if required*
          """
          from subprocess import Popen, PIPE, STDOUT
          import pymysql as ms
  
          # SETUP TUNNEL IF REQUIRED
          if "ssh tunnel" in self.settings:
              # TEST TUNNEL DOES NOT ALREADY EXIST
              sshPort = self.settings["ssh tunnel"]["port"]
              connected = self._checkServer(
                  self.settings["database settings"]["host"], sshPort)
              if connected:
                  pass
              else:
                  # GRAB TUNNEL SETTINGS FROM SETTINGS FILE
                  ru = self.settings["ssh tunnel"]["remote user"]
                  rip = self.settings["ssh tunnel"]["remote ip"]
                  rh = self.settings["ssh tunnel"]["remote datbase host"]
  
                  cmd = "ssh -fnN %(ru)s@%(rip)s -L %(sshPort)s:%(rh)s:3306" % locals()
                  p = Popen(cmd, shell=True, close_fds=True)
                  output = p.communicate()[0]
  
                  # TEST CONNECTION - QUIT AFTER SO MANY TRIES
                  connected = False
                  count = 0
                  while not connected:
                      connected = self._checkServer(
                          self.settings["database settings"]["host"], sshPort)
                      time.sleep(1)
                      count += 1
                      if count == 5:
                          self.log.error(
                              'cound not setup tunnel to remote datbase' % locals())
                          sys.exit(0)
  
          if "tunnel" in self.settings["database settings"] and self.settings["database settings"]["tunnel"]:
              # TEST TUNNEL DOES NOT ALREADY EXIST
              sshPort = self.settings["database settings"]["tunnel"]["port"]
              connected = self._checkServer(
                  self.settings["database settings"]["host"], sshPort)
              if connected:
                  pass
              else:
                  # GRAB TUNNEL SETTINGS FROM SETTINGS FILE
                  ru = self.settings["database settings"][
                      "tunnel"]["remote user"]
                  rip = self.settings["database settings"]["tunnel"]["remote ip"]
                  rh = self.settings["database settings"][
                      "tunnel"]["remote datbase host"]
  
                  cmd = "ssh -fnN %(ru)s@%(rip)s -L %(sshPort)s:%(rh)s:3306" % locals()
                  p = Popen(cmd, shell=True, close_fds=True)
                  output = p.communicate()[0]
  
                  # TEST CONNECTION - QUIT AFTER SO MANY TRIES
                  connected = False
                  count = 0
                  while not connected:
                      connected = self._checkServer(
                          self.settings["database settings"]["host"], sshPort)
                      time.sleep(1)
                      count += 1
                      if count == 5:
                          self.log.error(
                              'cound not setup tunnel to remote datbase' % locals())
                          sys.exit(0)
  
          # SETUP A DATABASE CONNECTION FOR THE remote database
          host = self.settings["database settings"]["host"]
          user = self.settings["database settings"]["user"]
          passwd = self.settings["database settings"]["password"]
          dbName = self.settings["database settings"]["db"]
          thisConn = ms.connect(
              host=host,
              user=user,
              passwd=passwd,
              db=dbName,
              port=sshPort,
              use_unicode=True,
              charset='utf8',
              local_infile=1,
              client_flag=ms.constants.CLIENT.MULTI_STATEMENTS,
              connect_timeout=36000,
              max_allowed_packet=51200000
          )
          thisConn.autocommit(True)
          self.remoteDBConn = thisConn
  
          return None