New file setup.py: builds a python package
[osm/openvim.git] / setup.py
diff --git a/setup.py b/setup.py
new file mode 100755 (executable)
index 0000000..642b5ad
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,145 @@
+#!/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'
+
+
+__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'
+                                            ]),
+                  ]
+
+
+_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",
+    "libvirt-python"
+]
+
+__scripts__ = ['openflow', 'ovim']
+
+
+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)
+        if not self.lite:
+            __scripts__.append('openvim')
+            __scripts__.append('openvimd')
+
+            cmd = 'ln -sf -v /usr/local/osm/openvim/openvimd /usr/bin/openvimd'
+            system(cmd)
+            cmd = 'ln -sf -v /usr/local/osm/openvim/openvim /usr/bin/openvim'
+            system(cmd)
+            cmd = 'ln -sf -v /usr/local/osm/openvim/scripts/service-openvim.sh /usr/sbin/service-openvim'
+            system(cmd)
+            cmd = 'ln -sf -v /usr/local/osm/openvim/scripts/openvim-report.sh /usr/sbin/service-report'
+            system(cmd)
+            cmd = 'ln -sf -v /usr/local/osm/openvim/scripts/service-floodlight.sh /usr/sbin/service-floodlight'
+            system(cmd)
+            cmd = 'ln -sf -v /usr/local/osm/openvim/scripts/service-opendaylight.sh /usr/sbin/service-opendaylight'
+            system(cmd)
+            cmd = 'ln -sf -v /usr/local/osm/openvim/scripts/initopenvim.sh /usr/sbin/initopenvim'
+            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',
+                  'onos',
+                  'ODL',
+                  'floodlight',
+                  ],
+      packages=find_packages() + ['database_utils'] + ['scripts'],
+      package_dir={__name__: __name__},
+      package_data={'database_utils': ['*'], 'scripts': ['*']},
+      scripts=__scripts__,
+      data_files=__data_files__,
+      include_package_data=True,
+      cmdclass={'install': LibOpenvimInstaller},
+      install_requires=_req
+      )
+
+