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("Using dir {}/{} for python artifacts".format(os
.getcwd(), self
.im_dir
))
37 path
= "{}/{}".format(os
.getcwd(), self
.im_dir
)
38 for files_item
in ['vnfd', 'nsd', 'nst']:
39 protoc_command
= ["pyang",
42 "{}/plugin".format(os
.path
.dirname(pyangbind
.__file
__)),
47 "{}/{}.py".format(self
.im_dir
, files_item
),
48 "{}/{}.yang".format(self
.model_dir
, files_item
)]
49 print("Generating {}.py from {}.yang".format(files_item
, files_item
))
50 if subprocess
.call(protoc_command
) != 0:
52 # To ensure generated files are copied to the python installation folder
53 self
.copy_tree(self
.im_dir
, "{}{}".format(self
.install_lib
, self
.im_dir
))
59 description
='OSM Information Model',
60 long_description
=open('README.rst').read(),
61 version_command
=('git describe --tags --long --dirty --match v*', 'pep440-git-full'),
62 author
='Mike Marchetti',
63 author_email
='mmarchetti@sandvine.com',
64 packages
=find_packages(),
65 include_package_data
=True,
66 setup_requires
=['setuptools-version-command'],
67 install_requires
=['pyang', 'pyangbind'],
68 test_suite
='nose.collector',
69 url
='https://osm.etsi.org/gitweb/?p=osm/IM.git;a=summary',
71 cmdclass
={'install': Install_osm_im
},