From 5e10559c997ae2abbca8eb5d8b87f5c7a09cd5d6 Mon Sep 17 00:00:00 2001
From: Fanna Lautenbach <lautenbach@astron.nl>
Date: Mon, 1 Aug 2022 14:26:05 +0200
Subject: [PATCH] MR comments; exception handling for unknown files, change ini
 format to cfg format

---
 ldvspec/{ldvspec => }/connection/__init__.py       |  0
 ldvspec/{ldvspec => }/connection/config.py         |  9 +++++++--
 .../database.ini => connection/database.cfg}       |  0
 .../connection/retrieve_db_connection.py           | 14 +++++++++++---
 ldvspec/connection/test.py                         |  0
 5 files changed, 18 insertions(+), 5 deletions(-)
 rename ldvspec/{ldvspec => }/connection/__init__.py (100%)
 rename ldvspec/{ldvspec => }/connection/config.py (58%)
 rename ldvspec/{ldvspec/connection/database.ini => connection/database.cfg} (100%)
 rename ldvspec/{ldvspec => }/connection/retrieve_db_connection.py (88%)
 create mode 100644 ldvspec/connection/test.py

diff --git a/ldvspec/ldvspec/connection/__init__.py b/ldvspec/connection/__init__.py
similarity index 100%
rename from ldvspec/ldvspec/connection/__init__.py
rename to ldvspec/connection/__init__.py
diff --git a/ldvspec/ldvspec/connection/config.py b/ldvspec/connection/config.py
similarity index 58%
rename from ldvspec/ldvspec/connection/config.py
rename to ldvspec/connection/config.py
index 229c7bb6..947d8c96 100644
--- a/ldvspec/ldvspec/connection/config.py
+++ b/ldvspec/connection/config.py
@@ -1,9 +1,14 @@
 from configparser import ConfigParser
 
 
-def read_config(section, filename='database.ini'):
+def read_config(section, filename='database.cfg'):
     parser = ConfigParser()
-    parser.read(filename)
+    try:
+        parser.read(filename)
+    except FileNotFoundError as exc:
+        raise FileNotFoundError(
+            "Configuration file with filename {0} not found".format(filename)
+        ) from exc
 
     db_settings = {}
     if parser.has_section(section):
diff --git a/ldvspec/ldvspec/connection/database.ini b/ldvspec/connection/database.cfg
similarity index 100%
rename from ldvspec/ldvspec/connection/database.ini
rename to ldvspec/connection/database.cfg
diff --git a/ldvspec/ldvspec/connection/retrieve_db_connection.py b/ldvspec/connection/retrieve_db_connection.py
similarity index 88%
rename from ldvspec/ldvspec/connection/retrieve_db_connection.py
rename to ldvspec/connection/retrieve_db_connection.py
index 6c9921ce..af8659de 100644
--- a/ldvspec/ldvspec/connection/retrieve_db_connection.py
+++ b/ldvspec/connection/retrieve_db_connection.py
@@ -47,12 +47,20 @@ def open_tunnel(configuration_params):
     tunnel_username = configuration_params.get('tunnelusername', "no username for the tunnel given")
     host = configuration_params.get('host', "no host given")
     port = int(configuration_params.get('port', "no port given"))
+
+    try:
+        ssh_config_file = os.path.expanduser("~/.ssh/config")
+    except FileNotFoundError as exc:
+        raise FileNotFoundError(
+            "Ssh config file not found on standard path '~/.ssh/config'. This is mandatory for opening the ssh tunnel"
+        ) from exc
+
     logging.info("Creating ssh tunnel for %s and port %s with tunnel host %s and username %s", repr(host), port,
                  repr(tunnel_host), repr(tunnel_username))
     ssh_tunnel = SSHTunnelForwarder(
         ssh_address_or_host=tunnel_host,
         ssh_username=tunnel_username,
-        ssh_config_file=os.path.expanduser("~/.ssh/config"),
+        ssh_config_file=ssh_config_file,
         remote_bind_address=(host, port)
     )
     ssh_tunnel.start()
@@ -61,13 +69,13 @@ def open_tunnel(configuration_params):
 
 def main():
     """
-    Opens a database connection from configuration file database.ini
+    Opens a database connection from configuration file database.cfg
     """
     logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.DEBUG)
 
     # Check the invocation arguments
     parser = argparse.ArgumentParser()
-    parser.add_argument("-s", "--section", help="Add the configuration's section from the database.ini.")
+    parser.add_argument("-s", "--section", help="Add the configuration's section from the database.cfg.")
     args = parser.parse_args()
 
     if not args.section:
diff --git a/ldvspec/connection/test.py b/ldvspec/connection/test.py
new file mode 100644
index 00000000..e69de29b
-- 
GitLab