Modify openvim code structure, improve py package

	- Move python code to osm_openvim folder
	- Python package install the code in a folder called osm_openvim

Change-Id: I09f1cdac84418a6a34ceaec9a69c2315e10296a7
Signed-off-by: mirabal <leonardo.mirabal@altran.com>
diff --git a/MANIFEST.in b/MANIFEST.in
index 8cf96f0..db411b1 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,4 +1,5 @@
-include openvimd.cfg
-recursive-include database_utils *
-recursive-include scripts *
+include openflow
+include openvimd
+include openvim
+recursive-include osm_openvim *
 
diff --git a/Makefile b/Makefile
index 03b2f8b..3f9feff 100644
--- a/Makefile
+++ b/Makefile
@@ -1,36 +1,69 @@
 #!/usr/bin/env bash
 SHELL := /bin/bash
 
-all: clean build  pip install
-lite: clean build  pip install_lite
-
-prepare:
-	mkdir -p build
-	cp *.py build/
-	cp MANIFEST.in build/
-	cp openvimd.py openvimd; cp openvimd build/openvimd
-	cp ovim.py ovim; cp ovim build/ovim
-	cp openvim build/
-	cp openflow build/
-	cp openvimd.cfg build/
-	cp -r scripts build/
-	cp -r database_utils build/
-
-build: prepare
-	python -m py_compile build/*.py
+all: clean build pip install
+lite: clean build_lite pip_lite install_lite
 
 clean:
 	rm -rf build
-	rm -rf openvimd ovim
 
-pip:
+prepare_lite:
+	mkdir -p build
+	cp -r  osm_openvim/ build/lib_osm_openvim
+	rm build/lib_osm_openvim/httpserver.py
+	rm build/lib_osm_openvim/openvimd.cfg
+	cp -r database_utils build/lib_osm_openvim/
+	cp -r scripts build/lib_osm_openvim/
+	cp MANIFEST.in build/
+	cp setup_lite.py build/setup.py
+	cp openflow build/
+	sed -i "s/from osm_openvim/from lib_osm_openvim/g" build/openflow
+	sed -i "s/import osm_openvim/import lib_osm_openvim/g" build/openflow
+	sed -i "s/import osm_openvim; print osm_openvim.__path__[0]/import lib_osm_openvim; print lib_osm_openvim.__path__[0]/g" build/lib_osm_openvim/database_utils/migrate_vim_db.sh
+	sed -i "s/recursive-include osm_openvim */recursive-include lib_osm_openvim */g" build/MANIFEST.in
+	sed '/include openvimd/d' build/MANIFEST.in
+	sed '/include openvim/d' build/MANIFEST.in
+
+prepare:
+	mkdir -p build
+	cp -r osm_openvim/  build/
+	cp -r scripts build/osm_openvim/
+	cp -r database_utils build/osm_openvim/
+	cp -r templates build/osm_openvim/
+	cp -r test build/osm_openvim/
+	cp -r charm build/osm_openvim/
+	cp MANIFEST.in build/
+	cp setup.py build/
+	cp openflow build/
+	cp openvim build/
+	cp openvimd build/
+
+build: prepare
+	python -m py_compile build/osm_openvim/*.py
+
+build_lite: prepare_lite
+	python -m py_compile build/lib_osm_openvim/*.py
+
+#deb:
+#	cd build && python setup.py --command-packages=stdeb.command bdist_deb
+#
+#debianize:
+#	cd build && python setup.py --command-packages=stdeb.command debianize
+
+pip: clean build
 	cd build; ./setup.py sdist
 
-install:
-	cd build/dist; pip  install lib*
+pip_lite: clean build_lite
+	cd build; ./setup.py sdist
 
-install_lite:
-	cd build/dist; pip  install lib*
+install: clean build
+	cd build/dist; pip  install osm_openvim*
+
+install_lite: clean build_lite
+	cd build/dist; pip  install  lib_osm_openvim-*
+
+
+
 
 
 
diff --git a/database_utils/migrate_vim_db.sh b/database_utils/migrate_vim_db.sh
index 599938d..6318769 100755
--- a/database_utils/migrate_vim_db.sh
+++ b/database_utils/migrate_vim_db.sh
@@ -92,8 +92,9 @@
 #GET OPENVIM VERSION
 OPENVIM_VER="$1"
 if [ -z "$OPENVIM_VER" ]
-then 
-    OPENVIM_VER=`ovim -v`
+then
+    OVIM_PATH=`python -c 'import osm_openvim; print osm_openvim.__path__[0]' 2> /dev/null`
+    OPENVIM_VER=`python ${OVIM_PATH}/ovim.py -v 2> /dev/null`
     OPENVIM_VER=${OPENVIM_VER%%-r*}
     OPENVIM_VER=${OPENVIM_VER##*version }
     echo "    Detected openvim version $OPENVIM_VER"
diff --git a/openflow b/openflow
index 4df9338..07261df 100755
--- a/openflow
+++ b/openflow
@@ -40,8 +40,8 @@
 import yaml
 import requests
 import logging
-import openflow_conn
-from openflow_thread import change_db2of, FlowBadFormat
+import osm_openvim.openflow_conn as openflow_conn
+from osm_openvim.openflow_thread import change_db2of, FlowBadFormat
 
 
 def of_switches(args):
diff --git a/openvimd.py b/openvimd
similarity index 98%
rename from openvimd.py
rename to openvimd
index b9d9d82..0578ba5 100755
--- a/openvimd.py
+++ b/openvimd
@@ -31,9 +31,8 @@
 __author__ = "Alfonso Tierno"
 __date__ = "$10-jul-2014 12:07:15$"
 
-
-import httpserver
-import auxiliary_functions as af
+import osm_openvim.httpserver as httpserver
+import osm_openvim.auxiliary_functions as af
 import sys
 import getopt
 import time
@@ -44,15 +43,17 @@
 import logging
 import logging.handlers as log_handlers
 import socket
-import ovim
+import osm_openvim.ovim as ovim
 
 global config_dic
 global logger
 logger = logging.getLogger('vim')
 
+
 class LoadConfigurationException(Exception):
     pass
 
+
 def load_configuration(configuration_file):
     default_tokens ={'http_port':9080, 'http_host':'localhost', 
                      'of_controller_nets_with_same_vlan':True,
diff --git a/ODL.py b/osm_openvim/ODL.py
similarity index 100%
rename from ODL.py
rename to osm_openvim/ODL.py
diff --git a/RADclass.py b/osm_openvim/RADclass.py
similarity index 100%
rename from RADclass.py
rename to osm_openvim/RADclass.py
diff --git a/osm_openvim/__init__.py b/osm_openvim/__init__.py
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/osm_openvim/__init__.py
@@ -0,0 +1 @@
+
diff --git a/auxiliary_functions.py b/osm_openvim/auxiliary_functions.py
similarity index 100%
rename from auxiliary_functions.py
rename to osm_openvim/auxiliary_functions.py
diff --git a/definitionsClass.py b/osm_openvim/definitionsClass.py
similarity index 100%
rename from definitionsClass.py
rename to osm_openvim/definitionsClass.py
diff --git a/dhcp_thread.py b/osm_openvim/dhcp_thread.py
similarity index 100%
rename from dhcp_thread.py
rename to osm_openvim/dhcp_thread.py
diff --git a/floodlight.py b/osm_openvim/floodlight.py
similarity index 100%
rename from floodlight.py
rename to osm_openvim/floodlight.py
diff --git a/host_thread.py b/osm_openvim/host_thread.py
similarity index 100%
rename from host_thread.py
rename to osm_openvim/host_thread.py
diff --git a/httpserver.py b/osm_openvim/httpserver.py
similarity index 100%
rename from httpserver.py
rename to osm_openvim/httpserver.py
diff --git a/onos.py b/osm_openvim/onos.py
similarity index 100%
rename from onos.py
rename to osm_openvim/onos.py
diff --git a/openflow_conn.py b/osm_openvim/openflow_conn.py
similarity index 100%
rename from openflow_conn.py
rename to osm_openvim/openflow_conn.py
diff --git a/openflow_thread.py b/osm_openvim/openflow_thread.py
similarity index 100%
rename from openflow_thread.py
rename to osm_openvim/openflow_thread.py
diff --git a/openvimd.cfg b/osm_openvim/openvimd.cfg
similarity index 100%
rename from openvimd.cfg
rename to osm_openvim/openvimd.cfg
diff --git a/ovim.py b/osm_openvim/ovim.py
similarity index 99%
rename from ovim.py
rename to osm_openvim/ovim.py
index b369594..39ab578 100755
--- a/ovim.py
+++ b/osm_openvim/ovim.py
@@ -34,16 +34,17 @@
 database_version = "0.17"      #expected database schema version
 
 import threading
-import vim_db
+import osm_openvim.vim_db as vim_db
 import logging
 import imp
-import host_thread as ht
-import dhcp_thread as dt
-import openflow_thread as oft
+import argparse
 from netaddr import IPNetwork
 from jsonschema import validate as js_v, exceptions as js_e
-import openflow_conn
-import argparse
+import osm_openvim.host_thread as ht
+import osm_openvim.dhcp_thread as dt
+import osm_openvim.openflow_thread as oft
+import osm_openvim.openflow_conn as openflow_conn
+
 
 HTTP_Bad_Request =          400
 HTTP_Unauthorized =         401
diff --git a/vim_db.py b/osm_openvim/vim_db.py
similarity index 100%
rename from vim_db.py
rename to osm_openvim/vim_db.py
diff --git a/vim_schema.py b/osm_openvim/vim_schema.py
similarity index 100%
rename from vim_schema.py
rename to osm_openvim/vim_schema.py
diff --git a/scripts/openvim-report.sh b/scripts/openvim-report
similarity index 100%
rename from scripts/openvim-report.sh
rename to scripts/openvim-report
diff --git a/scripts/service-floodlight.sh b/scripts/service-floodlight
similarity index 100%
rename from scripts/service-floodlight.sh
rename to scripts/service-floodlight
diff --git a/scripts/service-opendaylight.sh b/scripts/service-opendaylight
similarity index 100%
rename from scripts/service-opendaylight.sh
rename to scripts/service-opendaylight
diff --git a/scripts/service-openvim.sh b/scripts/service-openvim
similarity index 100%
rename from scripts/service-openvim.sh
rename to scripts/service-openvim
diff --git a/setup.py b/setup.py
index 1d3138f..fac60ea 100755
--- a/setup.py
+++ b/setup.py
@@ -1,41 +1,16 @@
 #!/usr/bin/env python
 
-from setuptools import setup, find_packages
-from setuptools.command.install import install
-from os import system
 from setuptools import setup
 
-__name__ = 'lib-osm-openvim'
-__version__ = '1.0.0'
-__description__ = 'OSM Openvim library'
-__author__ = 'ETSI OSM'
-__author_email__ = 'alfonso.tiernosepulveda@telefonica.com'
-__maintainer__ = 'mirabal'
-__maintainer_email__ = 'leonardo.mirabal@altran.com'
-__license__ = 'Apache 2.0'
-__url__ = 'https://osm.etsi.org/gitweb/?p=osm/openvim.git;a=summary'
-
-cmd = 'cp ovim.py ovim'
-system(cmd)
-
-__data_files__ = [('osm/openvim/', ['openvimd.cfg']),
-                  ('osm/openvim/database_utils/', ['database_utils/vim_db_structure.sql',
-                                                   'database_utils/nets.sql',
-                                                   'database_utils/of_ports_pci_correspondence.sql',
-                                                   'database_utils/host_ranking.sql',
-                                                   'database_utils/dump_db.sh',
-                                                   'database_utils/init_vim_db.sh',
-                                                   'database_utils/migrate_vim_db.sh',
-                                                   'database_utils/install-db-server.sh'
-                                                   ]),
-                  ('osm/openvim/scripts/', ['scripts/service-openvim.sh',
-                                            'scripts/openvim-report.sh',
-                                            'scripts/service-floodlight.sh',
-                                            'scripts/service-opendaylight.sh',
-                                            'scripts/initopenvim.sh'
-                                            ]),
-                  ]
-
+__name = 'osm_openvim'
+__version = '1.0.0'
+__description = 'OSM Openvim library'
+__author = 'ETSI OSM'
+__author_email = 'alfonso.tiernosepulveda@telefonica.com'
+__maintainer = 'mirabal'
+__maintainer_email = 'leonardo.mirabal@altran.com'
+__license = 'Apache 2.0'
+__url = 'https://osm.etsi.org/gitweb/?p=osm/openvim.git;a=summary'
 
 _req = [
     "asn1crypto",
@@ -64,66 +39,31 @@
     "libvirt-python"
 ]
 
-__scripts__ = ['openflow', 'openvim', 'ovim']
+__scripts__ = ['openflow',
+               'openvim',
+               'openvimd',
+               'osm_openvim/scripts/service-openvim',
+               'osm_openvim/scripts/service-opendaylight',
+               'osm_openvim/scripts/service-floodlight',
+               'osm_openvim/scripts/service-openvim',
+               'osm_openvim/scripts/openvim-report',
+               'osm_openvim/scripts/get_dhcp_lease.sh']
 
-
-class LibOpenvimInstaller(install):
-    lite = None
-    user_options = install.user_options + [('lite', None, "Don't install without Machine Learning modules.")]
-
-    def initialize_options(self):
-        self.lite = None
-        install.initialize_options(self)
-
-    def finalize_options(self):
-        install.finalize_options(self)
-
-    def run(self):
-
-        cmd = 'ln -sf -v /usr/local/osm/openvim/openvimd.cfg /etc/default/openvimd.cfg'
-        system(cmd)
-        cmd = 'ln -sf -v /usr/local/osm/openvim/openflow /usr/bin/openflow'
-        system(cmd)
-        cmd = 'ln -sf -v /usr/local/osm/openvim/ovim.py /usr/bin/ovim'
-        system(cmd)
-
-        install.run(self)
-
-
-setup(name=__name__,
-      version=__version__,
-      description=__description__,
-      long_description=__description__,
-      author=__author__,
-      author_email=__author_email__,
-      license=__license__,
-      maintainer=__maintainer__,
-      maintainer_email=__maintainer_email__,
-      url=__url__,
-      py_modules=['ovim',
-                  'openvimd',
-                  'vim_db',
-                  'httpserver',
-                  'RADclass',
-                  'auxiliary_functions',
-                  'dhcp_thread',
-                  'definitionsClass',
-                  'host_thread',
-                  'vim_schema',
-                  'ovim',
-                  'openflow_thread',
-                  'openflow_conn',
-                  'onos',
-                  'ODL',
-                  'floodlight',
-                  ],
-      packages=find_packages() + ['database_utils'] + ['scripts'],
-      package_dir={__name__: __name__},
-      package_data={'database_utils': ['*'], 'scripts': ['*']},
+setup(name=__name,
+      version=__version,
+      description=__description,
+      long_description=__description,
+      author=__author,
+      author_email=__author_email,
+      license=__license,
+      maintainer=__maintainer,
+      maintainer_email=__maintainer_email,
+      url=__url,
+      packages=[__name],
+      package_dir={__name: __name},
       scripts=__scripts__,
-      data_files=__data_files__,
+      package_data={'osm_openvim': ['*']},
       include_package_data=True,
-      cmdclass={'install': LibOpenvimInstaller},
       install_requires=_req
       )
 
diff --git a/setup_lite.py b/setup_lite.py
new file mode 100755
index 0000000..cf38014
--- /dev/null
+++ b/setup_lite.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+from setuptools import setup
+
+__name = 'lib_osm_openvim'
+__version = '1.0.0'
+__description = 'OSM Openvim library'
+__author = 'ETSI OSM'
+__author_email = 'alfonso.tiernosepulveda@telefonica.com'
+__maintainer = 'mirabal'
+__maintainer_email = 'leonardo.mirabal@altran.com'
+__license = 'Apache 2.0'
+__url = 'https://osm.etsi.org/gitweb/?p=osm/openvim.git;a=summary'
+
+_req = [
+    "asn1crypto",
+    "cffi",
+    "enum34",
+    "functools32",
+    "idna",
+    "ipaddress",
+    "packaging",
+    "pbr",
+    "pkgconfig",
+    "pyasn1",
+    "pycparser",
+    "pycrypto",
+    "pyparsing",
+    "six",
+    "jsonschema",
+    "argcomplete",
+    "requests",
+    "PyYAML",
+    "requestsexceptions",
+    "netaddr",
+    "bottle",
+    "MySQL-python",
+    "paramiko",
+]
+
+__scripts__ = ['openflow']
+
+setup(name=__name,
+      version=__version,
+      description=__description,
+      long_description=__description,
+      author=__author,
+      author_email=__author_email,
+      license=__license,
+      maintainer=__maintainer,
+      maintainer_email=__maintainer_email,
+      url=__url,
+      packages=[__name],
+      package_dir={__name: __name},
+      scripts=__scripts__,
+      package_data={'lib_osm_openvim': ['*']},
+      include_package_data=True,
+      install_requires=_req
+      )
+
+