#!/bin/bash

# Copyright 2018 Whitestack, LLC
# *************************************************************

# This file is part of OSM Monitoring module
# All Rights Reserved to Whitestack, LLC

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at

#         http://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

# For those usages not covered by the Apache License, Version 2.0 please
# contact: bdiaz@whitestack.com or glavado@whitestack.com
##

echo "Installing python dependencies via pip..."
pip3 install aiokafka==0.6.0
pip3 install requests==2.18.*
pip3 install python-keystoneclient==3.15.*
pip3 install six==1.11.*
pip3 install peewee==3.8.*
pip3 install pyyaml>=5.1.2
pip3 install prometheus_client==0.4.*
pip3 install gnocchiclient==7.0.*
pip3 install pyvcloud==19.1.1
pip3 install python-ceilometerclient==2.9.*
pip3 install peewee-migrate==1.1.*
pip3 install python-novaclient==12.0.*
pip3 install pymysql==0.9.*
pip3 install python-neutronclient==5.1.*
echo "Installation of python dependencies finished"
