Re-organise the source tree

Make this look more like a typical python source tree:

 * Move all the module code under a new Vland directory
 * Rename vland.py to vland
 * Remove lots of old hacky path-mangling code

Change-Id: I6ec18ab5af69db1c213b1ceaddc6a0c4b52baad8
diff --git a/db/__init__.py b/Vland/__init__.py
similarity index 100%
copy from db/__init__.py
copy to Vland/__init__.py
diff --git a/config/__init__.py b/Vland/config/__init__.py
similarity index 100%
rename from config/__init__.py
rename to Vland/config/__init__.py
diff --git a/config/config.py b/Vland/config/config.py
similarity index 97%
rename from config/config.py
rename to Vland/config/config.py
index 67d3bfa..802f881 100644
--- a/config/config.py
+++ b/Vland/config/config.py
@@ -24,12 +24,7 @@
 import ConfigParser
 import os, sys, re
 
-if __name__ == '__main__':
-    vlandpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
-    sys.path.insert(0, vlandpath)
-    sys.path.insert(0, "%s/.." % vlandpath)
-
-from errors import ConfigError
+from Vland.errors import ConfigError
 
 def is_positive(text):
     valid_true = ('1', 'y', 'yes', 't', 'true')
diff --git a/config/test-clashing-ports.cfg b/Vland/config/test-clashing-ports.cfg
similarity index 100%
rename from config/test-clashing-ports.cfg
rename to Vland/config/test-clashing-ports.cfg
diff --git a/config/test-invalid-DB.cfg b/Vland/config/test-invalid-DB.cfg
similarity index 100%
rename from config/test-invalid-DB.cfg
rename to Vland/config/test-invalid-DB.cfg
diff --git a/config/test-invalid-logging-level.cfg b/Vland/config/test-invalid-logging-level.cfg
similarity index 100%
rename from config/test-invalid-logging-level.cfg
rename to Vland/config/test-invalid-logging-level.cfg
diff --git a/config/test-invalid-vland.cfg b/Vland/config/test-invalid-vland.cfg
similarity index 100%
rename from config/test-invalid-vland.cfg
rename to Vland/config/test-invalid-vland.cfg
diff --git a/config/test-known-good.cfg b/Vland/config/test-known-good.cfg
similarity index 100%
rename from config/test-known-good.cfg
rename to Vland/config/test-known-good.cfg
diff --git a/config/test-missing-db-username.cfg b/Vland/config/test-missing-db-username.cfg
similarity index 100%
rename from config/test-missing-db-username.cfg
rename to Vland/config/test-missing-db-username.cfg
diff --git a/config/test-missing-dbname.cfg b/Vland/config/test-missing-dbname.cfg
similarity index 100%
rename from config/test-missing-dbname.cfg
rename to Vland/config/test-missing-dbname.cfg
diff --git a/config/test-reused-switch-names.cfg b/Vland/config/test-reused-switch-names.cfg
similarity index 100%
rename from config/test-reused-switch-names.cfg
rename to Vland/config/test-reused-switch-names.cfg
diff --git a/config/test-unknown-section.cfg b/Vland/config/test-unknown-section.cfg
similarity index 100%
rename from config/test-unknown-section.cfg
rename to Vland/config/test-unknown-section.cfg
diff --git a/config/test.py b/Vland/config/test.py
similarity index 96%
rename from config/test.py
rename to Vland/config/test.py
index 0ce11f6..046fbb2 100644
--- a/config/test.py
+++ b/Vland/config/test.py
@@ -1,12 +1,12 @@
 import unittest, os, sys
 vlandpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
 sys.path.insert(0, vlandpath)
-sys.path.insert(0, "%s/.." % vlandpath)
+sys.path.insert(0, "%s/../.." % vlandpath)
 
 os.chdir(vlandpath)
 
-from config.config import VlanConfig
-from errors import ConfigError
+from Vland.config.config import VlanConfig
+from Vland.errors import ConfigError
 
 class MyTest(unittest.TestCase):
 
diff --git a/db/__init__.py b/Vland/db/__init__.py
similarity index 100%
rename from db/__init__.py
rename to Vland/db/__init__.py
diff --git a/db/db.py b/Vland/db/db.py
similarity index 98%
rename from db/db.py
rename to Vland/db/db.py
index 4fc9444..d5b541b 100644
--- a/db/db.py
+++ b/Vland/db/db.py
@@ -37,12 +37,7 @@
 #            it
 DATABASE_SCHEMA_VERSION = 2
 
-if __name__ == '__main__':
-    vlandpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
-    sys.path.insert(0, vlandpath)
-    sys.path.insert(0, "%s/.." % vlandpath)
-
-from errors import CriticalError, InputError, NotFoundError
+from Vland.errors import CriticalError, InputError, NotFoundError
 
 class VlanDB:
     def __init__(self, db_name="vland", username="vland", readonly=True):
diff --git a/db/init.doc b/Vland/db/init.doc
similarity index 100%
rename from db/init.doc
rename to Vland/db/init.doc
diff --git a/db/setup_db.py b/Vland/db/setup_db.py
similarity index 100%
rename from db/setup_db.py
rename to Vland/db/setup_db.py
diff --git a/drivers/CiscoCatalyst.py b/Vland/drivers/CiscoCatalyst.py
similarity index 100%
rename from drivers/CiscoCatalyst.py
rename to Vland/drivers/CiscoCatalyst.py
diff --git a/drivers/CiscoSX300.py b/Vland/drivers/CiscoSX300.py
similarity index 100%
rename from drivers/CiscoSX300.py
rename to Vland/drivers/CiscoSX300.py
diff --git a/drivers/Dummy.py b/Vland/drivers/Dummy.py
similarity index 100%
rename from drivers/Dummy.py
rename to Vland/drivers/Dummy.py
diff --git a/drivers/Mellanox.py b/Vland/drivers/Mellanox.py
similarity index 100%
rename from drivers/Mellanox.py
rename to Vland/drivers/Mellanox.py
diff --git a/drivers/NetgearXSM.py b/Vland/drivers/NetgearXSM.py
similarity index 100%
rename from drivers/NetgearXSM.py
rename to Vland/drivers/NetgearXSM.py
diff --git a/drivers/TPLinkTLSG2XXX.py b/Vland/drivers/TPLinkTLSG2XXX.py
similarity index 100%
rename from drivers/TPLinkTLSG2XXX.py
rename to Vland/drivers/TPLinkTLSG2XXX.py
diff --git a/drivers/__init__.py b/Vland/drivers/__init__.py
similarity index 100%
rename from drivers/__init__.py
rename to Vland/drivers/__init__.py
diff --git a/drivers/common.py b/Vland/drivers/common.py
similarity index 100%
rename from drivers/common.py
rename to Vland/drivers/common.py
diff --git a/errors.py b/Vland/errors.py
similarity index 100%
rename from errors.py
rename to Vland/errors.py
diff --git a/ipc/__init__.py b/Vland/ipc/__init__.py
similarity index 100%
rename from ipc/__init__.py
rename to Vland/ipc/__init__.py
diff --git a/ipc/client-new.py b/Vland/ipc/client-new.py
similarity index 100%
rename from ipc/client-new.py
rename to Vland/ipc/client-new.py
diff --git a/ipc/ipc.py b/Vland/ipc/ipc.py
similarity index 96%
rename from ipc/ipc.py
rename to Vland/ipc/ipc.py
index 8df1219..5961ed1 100644
--- a/ipc/ipc.py
+++ b/Vland/ipc/ipc.py
@@ -25,9 +25,7 @@
 import sys
 import logging
 
-vlandpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
-sys.path.insert(0, vlandpath)
-from errors import CriticalError, InputError, ConfigError, SocketError
+from Vland.errors import CriticalError, InputError, ConfigError, SocketError
 
 class VlanIpc:
     """VLANd IPC class"""
diff --git a/ipc/server-new.py b/Vland/ipc/server-new.py
similarity index 100%
rename from ipc/server-new.py
rename to Vland/ipc/server-new.py
diff --git a/util.py b/Vland/util.py
similarity index 100%
rename from util.py
rename to Vland/util.py
diff --git a/visualisation/__init__.py b/Vland/visualisation/__init__.py
similarity index 100%
rename from visualisation/__init__.py
rename to Vland/visualisation/__init__.py
diff --git a/visualisation/graphics.py b/Vland/visualisation/graphics.py
similarity index 98%
rename from visualisation/graphics.py
rename to Vland/visualisation/graphics.py
index 55067d8..84083d0 100644
--- a/visualisation/graphics.py
+++ b/Vland/visualisation/graphics.py
@@ -25,12 +25,7 @@
 
 import gd, os, sys
 
-if __name__ == '__main__':
-    vlandpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
-    sys.path.insert(0, vlandpath)
-    sys.path.insert(0, "%s/.." % vlandpath)
-
-from errors import InputError
+from Vland.errors import InputError
 
 class Graphics:
     """ Code and config for the visualisation graphics module """
diff --git a/visualisation/visualisation.py b/Vland/visualisation/visualisation.py
similarity index 98%
rename from visualisation/visualisation.py
rename to Vland/visualisation/visualisation.py
index eb1edcd..603835d 100644
--- a/visualisation/visualisation.py
+++ b/Vland/visualisation/visualisation.py
@@ -29,16 +29,11 @@
 import urlparse
 import cStringIO
 
-if __name__ == '__main__':
-    vlandpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
-    sys.path.insert(0, vlandpath)
-    sys.path.insert(0, "%s/.." % vlandpath)
-
-from errors import InputError
-from db.db import VlanDB
-from config.config import VlanConfig
-from graphics import Graphics,Switch
-from util import VlanUtil
+from Vland.errors import InputError
+from Vland.db.db import VlanDB
+from Vland.config.config import VlanConfig
+from Vland.visualisation.graphics import Graphics,Switch
+from Vland.util import VlanUtil
 class VlandHTTPServer(HTTPServer):
     """ Trivial wrapper for HTTPServer so we can include our own state. """
     def __init__(self, server_address, handler, state):
diff --git a/vland.py b/vland
similarity index 95%
rename from vland.py
rename to vland
index 633e10f..7365a73 100755
--- a/vland.py
+++ b/vland
@@ -17,22 +17,19 @@
 #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 #  MA 02110-1301, USA.
 #
-#  Main VLANd module
+#  Top-level VLANd daemon
 #
 
 import os, sys
 import time
 import logging
 
-vlandpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
-sys.path.insert(0, vlandpath)
-
-from config.config import VlanConfig
-from db.db import VlanDB
-from ipc.ipc import VlanIpc
-from errors import InputError, NotFoundError, SocketError
-from util import VlanUtil
-from visualisation.visualisation import Visualisation
+from Vland.config.config import VlanConfig
+from Vland.db.db import VlanDB
+from Vland.ipc.ipc import VlanIpc
+from Vland.errors import InputError, NotFoundError, SocketError
+from Vland.util import VlanUtil
+from Vland.visualisation.visualisation import Visualisation
 
 class DaemonState:
     """ Simple container for stuff to make for nicer syntax """
diff --git a/vland-admin b/vland-admin
index f635699..ced26eb 100755
--- a/vland-admin
+++ b/vland-admin
@@ -24,12 +24,9 @@
 import argparse
 import datetime, time
 
-vlandpath = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0])))
-sys.path.insert(0, vlandpath)
-
-from errors import InputError, SocketError, NotFoundError, Error
-from config.config import VlanConfig
-from ipc.ipc import VlanIpc
+from Vland.errors import InputError, SocketError, NotFoundError, Error
+from Vland.config.config import VlanConfig
+from Vland.ipc.ipc import VlanIpc
 
 prog = "vland-admin"
 version = "0.7"
diff --git a/vland.service b/vland.service
index 83397c9..e998dba 100644
--- a/vland.service
+++ b/vland.service
@@ -6,7 +6,7 @@
 
 [Service]
 Type=simple
-ExecStart=/home/vland/vland/vland.py
+ExecStart=/home/vland/vland/vland
 ExecStop=/home/vland/vland/vland-admin shutdown
 WorkingDirectory=/home/vland/vland
 User=vland