Jose Idar d8a0dcb5e6 Modernize setup.py and add wheel support
* Incremented version to 0.2.2 for pypi release.
  * Removed all post-install hooks.  All initialization and configuration
    should be done through the cafe-config cli tool.
  * Added setup.cfg with support for universal bdist wheel.
  * Updated MANIFEST.in file.
  * Updated README.rst to reflect new install procedures.
  * Modified cafe-config so that initialization command is now just
      "cafe-config init".
  * Since the ".opencafe" directory is no longer initialized at install
    while access to the source code is guaranteed, the plugins are now
    distributed as package_data, and installed as such to site-packages
    under the new "plugins" directory within the "cafe" namespace.
  * The plugins directory is moved to the cafe package directory as
     package_data.
  * The plugin cache is no longer created at initialization, and all
    code relating to it in the cli.py and managers.py file has been
    removed.
  * Removed pip-requires file in favor of including the only requirement,
    'six', in setup.py.  The plan is to refactor so as to remove the
    dependency on six eventually.
  * Renamed test-requirements.txt to test-requires.
  * Added Authors.rst

Change-Id: I28a605f926ae5f2d972a6a36171d0e4eb92cac09
2015-10-11 22:15:08 -05:00

112 lines
3.7 KiB
Python

# Copyright 2015 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 argparse
from cafe.configurator.managers import (
EngineDirectoryManager, EngineConfigManager, EnginePluginManager)
class EngineActions(object):
class Init(object):
def __init__(self, args):
print("=================================")
print("* Initializing Engine Install")
EngineDirectoryManager.build_engine_directories()
EngineConfigManager.build_engine_config()
print("=================================")
class InitInstall(argparse.Action):
def __call__(
self, parser, namespace, values,
option_string=None):
print("=================================")
print("* Initializing Engine Install")
EngineDirectoryManager.build_engine_directories()
EngineConfigManager.build_engine_config()
print("=================================")
class PluginActions(object):
class InstallPlugin(argparse.Action):
def __call__(
self, parser, namespace, values,
option_string=None):
print("=================================")
print("* Installing Plugins")
EnginePluginManager.install_plugins(values)
print("=================================")
class ListPlugins(argparse.Action):
def __call__(
self, parser, namespace, values,
option_string=None):
print("=================================")
print("* Available Plugins")
EnginePluginManager.list_plugins()
print("=================================")
class ConfiguratorCLI(object):
"""CLI for future engine management and configuration
options."""
@classmethod
def run(cls):
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest="subcommand")
# Engine configuration subparser
subparser_engine_config = subparsers.add_parser(
'engine')
subparser_engine_config.add_argument(
'--init-install',
action=EngineActions.InitInstall,
nargs=0,
help="Deprecated. Please use 'cafe-config init' instead.")
subparser_init = subparsers.add_parser('init')
subparser_init.set_defaults(func=EngineActions.Init)
# Plugin argument subparser
subparser_plugins = subparsers.add_parser('plugins')
plugin_args = subparser_plugins.add_subparsers(
dest='plugin_args')
plugins_list_parser = plugin_args.add_parser('list')
plugins_list_parser.add_argument(
'list_plugins',
action=PluginActions.ListPlugins,
nargs=0)
plugins_install_parser = plugin_args.add_parser('install')
plugins_install_parser.add_argument(
'plugin-name',
action=PluginActions.InstallPlugin,
type=str,
nargs='*')
# parse args and trigger actions
args = parser.parse_args()
try:
args.func(args)
except AttributeError:
return args
def entry_point():
cli = ConfiguratorCLI()
cli.run()