[metadata]
name = python-watcher
summary = Watcher takes advantage of CEP and ML algorithms/metaheuristics to improve physical resources usage through better VM placement. Watcher can improve your cloud optimization by reducing energy footprint and increasing profits.
description-file =
    README.rst
author = OpenStack
author-email = openstack-dev@lists.openstack.org
home-page = http://docs.openstack.org/developer/watcher/
classifier =
    Environment :: OpenStack
    Intended Audience :: Information Technology
    Intended Audience :: System Administrators
    License :: OSI Approved :: Apache Software License
    Operating System :: POSIX :: Linux
    Programming Language :: Python
    Programming Language :: Python :: 2
    Programming Language :: Python :: 2.7
    Programming Language :: Python :: 3
    Programming Language :: Python :: 3.4
    Programming Language :: Python :: 3.5

[files]
packages =
    watcher
    watcher_tempest_plugin
data_files =
    etc/ = etc/*

[global]
setup-hooks =
    pbr.hooks.setup_hook

[entry_points]
oslo.config.opts =
    watcher = watcher.opts:list_opts

console_scripts =
    watcher-api = watcher.cmd.api:main
    watcher-db-manage = watcher.cmd.dbmanage:main
    watcher-decision-engine = watcher.cmd.decisionengine:main
    watcher-applier = watcher.cmd.applier:main
    watcher-sync = watcher.cmd.sync:main

tempest.test_plugins =
    watcher_tests = watcher_tempest_plugin.plugin:WatcherTempestPlugin

watcher.database.migration_backend =
    sqlalchemy = watcher.db.sqlalchemy.migration

watcher_goals =
    unclassified = watcher.decision_engine.goal.goals:Unclassified
    dummy = watcher.decision_engine.goal.goals:Dummy
    server_consolidation = watcher.decision_engine.goal.goals:ServerConsolidation
    thermal_optimization = watcher.decision_engine.goal.goals:ThermalOptimization
    workload_balancing = watcher.decision_engine.goal.goals:WorkloadBalancing
    airflow_optimization = watcher.decision_engine.goal.goals:AirflowOptimization

watcher_scoring_engines =
    dummy_scorer = watcher.decision_engine.scoring.dummy_scorer:DummyScorer

watcher_scoring_engine_containers =
    dummy_scoring_container = watcher.decision_engine.scoring.dummy_scoring_container:DummyScoringContainer

watcher_strategies =
    dummy = watcher.decision_engine.strategy.strategies.dummy_strategy:DummyStrategy
    dummy_with_scorer = watcher.decision_engine.strategy.strategies.dummy_with_scorer:DummyWithScorer
    basic = watcher.decision_engine.strategy.strategies.basic_consolidation:BasicConsolidation
    outlet_temperature = watcher.decision_engine.strategy.strategies.outlet_temp_control:OutletTempControl
    vm_workload_consolidation = watcher.decision_engine.strategy.strategies.vm_workload_consolidation:VMWorkloadConsolidation
    workload_stabilization = watcher.decision_engine.strategy.strategies.workload_stabilization:WorkloadStabilization
    workload_balance = watcher.decision_engine.strategy.strategies.workload_balance:WorkloadBalance
    uniform_airflow = watcher.decision_engine.strategy.strategies.uniform_airflow:UniformAirflow

watcher_actions =
    migrate = watcher.applier.actions.migration:Migrate
    nop = watcher.applier.actions.nop:Nop
    sleep = watcher.applier.actions.sleep:Sleep
    change_nova_service_state = watcher.applier.actions.change_nova_service_state:ChangeNovaServiceState

watcher_workflow_engines =
    taskflow = watcher.applier.workflow_engine.default:DefaultWorkFlowEngine

watcher_planners =
    default  = watcher.decision_engine.planner.default:DefaultPlanner

watcher_cluster_data_model_collectors =
    compute = watcher.decision_engine.model.collector.nova:NovaClusterDataModelCollector

[pbr]
warnerrors = true
autodoc_index_modules = true
autodoc_exclude_modules =
    watcher.db.sqlalchemy.alembic.env
    watcher.db.sqlalchemy.alembic.versions.*
    watcher.tests.*
    watcher_tempest_plugin.*
    watcher.doc


[build_sphinx]
source-dir = doc/source
build-dir = doc/build
fresh_env = 1
all_files = 1

[upload_sphinx]
upload-dir = doc/build/html


[compile_catalog]
directory = watcher/locale
domain = watcher

[update_catalog]
domain = watcher
output_dir = watcher/locale
input_file = watcher/locale/watcher.pot

[extract_messages]
keywords = _ gettext ngettext l_ lazy_gettext _LI _LW _LE _LC
mapping_file = babel.cfg
output_file = watcher/locale/watcher.pot
