Fix typo in Jenkinsfile for feature5837
[osm/IM.git] / setup.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12 # implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 import subprocess
17 import sys
18 import os
19 from setuptools import setup, find_packages
20 from setuptools.command.install import install
21
22
23 class Install_osm_im(install):
24 """Generation of .py files from yang models"""
25 model_dir = "models/yang"
26 im_dir = "osm_im"
27
28 def pipinstall(self, package):
29 """pip install for executable dependencies"""
30 subprocess.call([sys.executable, "-m", "pip", "install", package])
31
32 def run(self):
33 self.pipinstall('pyang')
34 self.pipinstall('pyangbind')
35 import pyangbind
36 print("Creating dir {}/{} for python artifacts".format(os.getcwd(), self.im_dir))
37 path = "{}/{}".format(os.getcwd(), self.im_dir)
38 if not os.path.exists(path):
39 os.makedirs(path)
40 open("{}/{}/__init__.py".format(os.getcwd(), self.im_dir), 'a').close()
41 for files_item in ['vnfd', 'nsd', 'nst']:
42 protoc_command = ["pyang",
43 "-Werror",
44 "--plugindir",
45 "{}/plugin".format(os.path.dirname(pyangbind.__file__)),
46 "--path",
47 self.model_dir,
48 "-f", "pybind",
49 "-o",
50 "{}/{}.py".format(self.im_dir, files_item),
51 "{}/{}.yang".format(self.model_dir, files_item)]
52 print("Generating {}.py from {}.yang".format(files_item, files_item))
53 if subprocess.call(protoc_command) != 0:
54 sys.exit(-1)
55 # To ensure generated files are copied to the python installation folder
56 self.copy_tree(self.im_dir, "{}{}".format(self.install_lib, self.im_dir))
57 install.run(self)
58
59
60 setup(
61 name='osm_im',
62 description='OSM Information Model',
63 long_description=open('README.rst').read(),
64 version_command=('git describe --tags --long --dirty --match v*', 'pep440-git-full'),
65 author='Mike Marchetti',
66 author_email='mmarchetti@sandvine.com',
67 packages=find_packages(),
68 include_package_data=True,
69 setup_requires=['setuptools-version-command'],
70 install_requires=['pyang', 'pyangbind'],
71 test_suite='nose.collector',
72 url='https://osm.etsi.org/gitweb/?p=osm/IM.git;a=summary',
73 license='Apache 2.0',
74 cmdclass={'install': Install_osm_im},
75 )