[DEFAULT]

# Fake out the remote implementations
remote_nova_client = trove.tests.fakes.nova.fake_create_nova_client
remote_guest_client = trove.tests.fakes.guestagent.fake_create_guest_client
remote_swift_client = trove.tests.fakes.swift.fake_create_swift_client
remote_cinder_client = trove.tests.fakes.nova.fake_create_cinder_client

# Fake out the RPC implementation
rpc_backend = trove.common.rpc.impl_fake

# Fake out DNS.
trove_dns_support = True
dns_driver = trove.tests.fakes.dns.FakeDnsDriver
dns_instance_entry_factory = trove.tests.fakes.dns.FakeDnsInstanceEntryFactory


# This will remove some of the verbose logging when trying to diagnose tox issues
default_log_levels=routes.middleware=ERROR,trove.common.auth=WARN

log_file = trovetest.log

use_stderr = False

# Show more verbose log output (sets INFO log level output)
verbose = True

# Show debugging output in logs (sets DEBUG log level output)
debug = True

# Address to bind the API server
bind_host = 0.0.0.0

# Port the bind the API server to
bind_port = 8779

# Number of workers for the API service. The default will
# be the number of CPUs available. (integer value)
#trove_api_workers=None

# AMQP Connection info
rabbit_password=f7999d1955c5014aa32c

# SQLAlchemy connection string for the reference implementation
# registry server. Any valid SQLAlchemy connection string is fine.
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
sql_connection = sqlite:///trove_test.sqlite
#sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/trove
#sql_connection = postgresql://trove:trove@localhost/trove

# Period in seconds after which SQLAlchemy should reestablish its connection
# to the database.
#
# MySQL uses a default `wait_timeout` of 8 hours, after which it will drop
# idle connections. This can result in 'MySQL Gone Away' exceptions. If you
# notice this, you can lower this value to ensure that SQLAlchemy reconnects
# before MySQL can drop the connection.
sql_idle_timeout = 3600

#DB Api Implementation
db_api_implementation = trove.db.sqlalchemy.api

# Configuration options for talking to nova via the novaclient.
# These options are for an admin user in your keystone config.
# It proxy's the token received from the user to send to nova via this admin users creds,
# basically acting like the client via that proxy token.
nova_proxy_admin_user = admin
nova_proxy_admin_pass = 3de4922d8b6ac5a1aad9
nova_proxy_admin_tenant_name = admin
trove_auth_url = http://0.0.0.0:5000/v2.0

nova_region_name = RegionOne
nova_compute_service_type = compute
nova_service_name = Compute Service

# Config option for showing the IP address that nova doles out
network_label_regex = ^private$
ip_regex = ^(15.|123.)
black_list_regex = ^(10.0.0.)

# Config options for enabling volume service
trove_volume_support = True
nova_volume_service_type = volume
nova_volume_service_name = Volume Service
device_path = /dev/vdb
max_accepted_volume_size = 25
max_instances_per_user = 55
max_volumes_per_user = 100
max_backups_per_user = 5
volume_time_out=30

# Config options for rate limits
http_get_rate = 500
http_post_rate = 500
http_put_rate = 500
http_delete_rate = 500

# default datastore
default_datastore = a00000a0-00a0-0a00-00a0-000a000000aa

# Auth
admin_roles = admin

# Users to ignore for user create/list/delete operations
ignore_users = os_admin, root
ignore_dbs = lost+found, mysql, information_schema

# Guest related conf
agent_heartbeat_time = 10
agent_call_low_timeout = 5
agent_call_high_timeout = 150

server_delete_time_out=10
use_nova_server_volume = False
dns_time_out = 120
resize_time_out = 120
revert_time_out = 120

# usage notifications
notification_driver = trove.tests.util.usage
notification_service_id = mysql:123,percona:abc

# ============ notifer queue kombu connection options ========================

notifier_queue_hostname = localhost
notifier_queue_userid = guest
notifier_queue_password = guest
notifier_queue_ssl = False
notifier_queue_port = 5672
notifier_queue_virtual_host = /
notifier_queue_transport = memory

control_exchange = trove

paste_config_file=api-paste.ini.test

[mysql]
volume_support = True
device_path = /dev/vdb

[redis]
# redis uses local storage
volume_support = False
# default device_path = None

[cassandra]
volume_support = True
device_path = /dev/vdb

[couchbase]
volume_support = True
device_path = /dev/vdb

[mongodb]
volume_support = True
device_path = /dev/vdb

[composite:trove]
use = call:trove.common.wsgi:versioned_urlmap
/: versions
/v1.0: troveapi

[app:versions]
paste.app_factory = trove.versions:app_factory

[pipeline:troveapi]
pipeline = faultwrapper authtoken authorization contextwrapper ratelimit extensions troveapp
# pipeline = debug troveapp

[filter:extensions]
paste.filter_factory = trove.common.extensions:factory

[filter:authtoken]
paste.filter_factory = trove.tests.fakes.keystone:filter_factory
service_protocol = http
service_host = 127.0.0.1
service_port = 5000
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
auth_uri = http://127.0.0.1:5000/

[filter:authorization]
paste.filter_factory = trove.common.auth:AuthorizationMiddleware.factory

[filter:contextwrapper]
paste.filter_factory = trove.common.wsgi:ContextMiddleware.factory

[filter:faultwrapper]
paste.filter_factory = trove.common.wsgi:FaultWrapper.factory

[filter:ratelimit]
paste.filter_factory = trove.tests.fakes.limits:FakeRateLimitingMiddleware.factory

[app:troveapp]
paste.app_factory = trove.common.api:app_factory

#Add this filter to log request and response for debugging
[filter:debug]
paste.filter_factory = trove.common.wsgi:Debug
