135 lines
5.1 KiB
Python
135 lines
5.1 KiB
Python
"""
|
|
Copyright 2013 Rackspace
|
|
|
|
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.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import cloudcafe
|
|
import platform
|
|
import shutil
|
|
|
|
# These imports are only possible on Linux/OSX
|
|
if platform.system().lower() != 'windows':
|
|
import pwd
|
|
import grp
|
|
|
|
try:
|
|
from setuptools import setup, find_packages
|
|
except ImportError:
|
|
from distutils.core import setup, find_packages
|
|
|
|
if sys.argv[-1] == 'publish':
|
|
os.system('python setup.py sdist upload')
|
|
sys.exit()
|
|
|
|
requires = open('pip-requires').readlines()
|
|
|
|
setup(
|
|
name='cloudcafe',
|
|
version=cloudcafe.__version__,
|
|
description='CloudCAFE is an implementation of the Open CAFE Framework specifically designed to test deployed versions of OpenStack',
|
|
long_description='{0}\n\n{1}'.format(
|
|
open('README.md').read(),
|
|
open('HISTORY.rst').read()),
|
|
author='Rackspace Cloud QE',
|
|
author_email='cloud-cafe@lists.rackspace.com',
|
|
url='http://rackspace.com',
|
|
packages=find_packages(exclude=[]),
|
|
package_data={'': ['LICENSE', 'NOTICE']},
|
|
package_dir={'cloudcafe': 'cloudcafe'},
|
|
include_package_data=True,
|
|
install_requires=requires,
|
|
license=open('LICENSE').read(),
|
|
zip_safe=False,
|
|
#https://pypi.python.org/pypi?%3Aaction=list_classifiers
|
|
classifiers=(
|
|
'Development Status :: 1 - Planning',
|
|
'Intended Audience :: Developers',
|
|
'Natural Language :: English',
|
|
'License :: Other/Proprietary License',
|
|
'Operating System :: POSIX :: Linux',
|
|
'Programming Language :: Python',
|
|
'Programming Language :: Python :: 2.6',
|
|
'Programming Language :: Python :: 2.7',
|
|
#'Programming Language :: Python :: 3',
|
|
#'Programming Language :: Python :: 3.0',
|
|
#'Programming Language :: Python :: 3.1',
|
|
#'Programming Language :: Python :: 3.2',
|
|
#'Programming Language :: Python :: 3.3',
|
|
)
|
|
)
|
|
# real_prefix should only be set under a virtualenv
|
|
using_virtualenv = hasattr(sys, 'real_prefix')
|
|
|
|
''' @todo: need to clean this up or do it with puppet/chef '''
|
|
# Default Config Options
|
|
root_dir = "{0}/.cloudcafe".format(os.path.expanduser("~"))
|
|
config_dir = "{0}/configs".format(root_dir)
|
|
|
|
# Build Default directories
|
|
if(os.path.exists("{0}/engine.config".format(config_dir)) == False):
|
|
raise Exception("Core CAFE Engine configuration not found")
|
|
else:
|
|
# Copy over the default configurations
|
|
if(os.path.exists("~install")):
|
|
os.remove("~install")
|
|
# Report
|
|
print('\n'.join(["\t\t _ _ _",
|
|
"\t\t ( ` )_ ",
|
|
"\t\t ( ) `) _",
|
|
"\t\t(____(__.___`)__)",
|
|
"\t\t",
|
|
"\t\t ( (",
|
|
"\t\t ) )",
|
|
"\t\t ......... ",
|
|
"\t\t | |___ ",
|
|
"\t\t | |_ |",
|
|
"\t\t | :-) |_| |",
|
|
"\t\t | |___|",
|
|
"\t\t |_______|",
|
|
"\t\t=== CloudCAFE ==="]))
|
|
print("========================================================")
|
|
print("CloudCAFE Framework installed")
|
|
print("========================================================")
|
|
else:
|
|
# State file
|
|
temp = open("~install", "w")
|
|
temp.close()
|
|
|
|
# Get uid and gid of the current user to set permissions (Linux/OSX only)
|
|
if platform.system().lower() != 'windows':
|
|
if using_virtualenv:
|
|
working_user = os.getenv("USER")
|
|
else:
|
|
working_user = os.getenv("SUDO_USER")
|
|
|
|
uid = pwd.getpwnam(working_user).pw_uid
|
|
gid = pwd.getpwnam(working_user).pw_gid
|
|
|
|
config_dirs = os.listdir("configs")
|
|
for dir in config_dirs:
|
|
if not os.path.exists("{0}/{1}".format(config_dir, dir)):
|
|
print("Installing configurations for: {0}".format("{0}/{1}".format(config_dir, dir)))
|
|
os.makedirs("{0}/{1}".format(config_dir, dir))
|
|
# Fix the directory permissions
|
|
if platform.system().lower() != 'windows':
|
|
os.chown("{0}/{1}".format(config_dir, dir), uid, gid)
|
|
for file in os.listdir("configs/{0}".format(dir)):
|
|
print("Installing {0}/{1}/{2}".format(config_dir, dir, file))
|
|
shutil.copy2("configs/{0}/{1}".format(dir, file), "{0}/{1}/{2}".format(config_dir, dir, file))
|
|
# Fix the directory permissions
|
|
if platform.system().lower() != 'windows':
|
|
os.chown("{0}/{1}/{2}".format(config_dir, dir, file), uid, gid)
|