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
7 # http://www.apache.org/licenses/LICENSE-2.0
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
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
19 from setuptools
import setup
, find_packages
20 from setuptools
.command
.install
import install
23 class Install_osm_im(install
):
24 """Generation of .py files from yang models"""
25 model_dir
= "models/yang"
28 def pipinstall(self
, package
):
29 """pip install for executable dependencies"""
30 subprocess
.call([sys
.executable
, "-m", "pip", "install", package
])
33 self
.pipinstall('pyang')
34 self
.pipinstall('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
):
40 open("{}/{}/__init__.py".format(os
.getcwd(), self
.im_dir
), 'a').close()
41 for files_item
in ['vnfd', 'nsd', 'nst']:
42 protoc_command
= ["pyang",
45 "{}/plugin".format(os
.path
.dirname(pyangbind
.__file
__)),
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:
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
))
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',
74 cmdclass
={'install': Install_osm_im
},