Rename from reddwarf to trove.
Implements Blueprint reddwarf-trove-rename Change-Id: Ia9ee609bbc06a1d8b9d6917642529f30347541fd
This commit is contained in:
parent
18664fa9d8
commit
7ab80b554d
@ -2,8 +2,8 @@
|
|||||||
[run]
|
[run]
|
||||||
branch = True
|
branch = True
|
||||||
|
|
||||||
source=reddwarf
|
source=trove
|
||||||
omit=*reddwarf/tests*,*reddwarf/openstack/common*
|
omit=*trove/tests*,*trove/openstack/common*
|
||||||
|
|
||||||
[report]
|
[report]
|
||||||
# Regexes for lines to exclude from consideration
|
# Regexes for lines to exclude from consideration
|
||||||
|
9
.gitignore
vendored
9
.gitignore
vendored
@ -1,13 +1,12 @@
|
|||||||
vagrant/
|
vagrant/
|
||||||
*.pyc
|
*.pyc
|
||||||
.idea
|
.idea
|
||||||
reddwarf_test.sqlite
|
trove_test.sqlite
|
||||||
.venv
|
.venv
|
||||||
run_tests.log
|
run_tests.log
|
||||||
guest-agent-files.txt
|
guest-agent-files.txt
|
||||||
reddwarf.egg*
|
|
||||||
trove.egg*
|
trove.egg*
|
||||||
reddwarf/vcsversion.py
|
trove/vcsversion.py
|
||||||
*py*.egg
|
*py*.egg
|
||||||
.coverage
|
.coverage
|
||||||
cover/
|
cover/
|
||||||
@ -17,10 +16,10 @@ host-syslog.log
|
|||||||
tags
|
tags
|
||||||
.tox
|
.tox
|
||||||
rdtest.log
|
rdtest.log
|
||||||
reddwarf/versioninfo
|
trove/versioninfo
|
||||||
AUTHORS
|
AUTHORS
|
||||||
ChangeLog
|
ChangeLog
|
||||||
reddwarf.iml
|
trove.iml
|
||||||
atlassian-ide-plugin.xml
|
atlassian-ide-plugin.xml
|
||||||
.testrepository
|
.testrepository
|
||||||
.pid
|
.pid
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
test_command=${PYTHON:-python} -m subunit.run discover ./reddwarf/tests/unittests $LISTOPT $IDOPTION
|
test_command=${PYTHON:-python} -m subunit.run discover ./trove/tests/unittests $LISTOPT $IDOPTION
|
||||||
test_id_option=--load-list $IDFILE
|
test_id_option=--load-list $IDFILE
|
||||||
test_list_option=--list
|
test_list_option=--list
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
include reddwarf/db/sqlalchemy/migrate_repo/migrate.cfg
|
include trove/db/sqlalchemy/migrate_repo/migrate.cfg
|
||||||
include reddwarf/db/sqlalchemy/migrate_repo/README
|
include trove/db/sqlalchemy/migrate_repo/README
|
||||||
include reddwarf/db/sqlalchemy/migrate_repo/versions/*.sql
|
include trove/db/sqlalchemy/migrate_repo/versions/*.sql
|
||||||
include etc/reddwarf/*.*
|
include etc/trove/*.*
|
||||||
|
@ -9,10 +9,10 @@ fi
|
|||||||
function run() {
|
function run() {
|
||||||
.tox/py26/bin/python $@
|
.tox/py26/bin/python $@
|
||||||
}
|
}
|
||||||
run bin/reddwarf-manage \
|
run bin/trove-manage \
|
||||||
--config-file=etc/reddwarf/reddwarf.conf.test db_wipe \
|
--config-file=etc/trove/trove.conf.test db_wipe \
|
||||||
reddwarf_test.sqlite mysql fake
|
trove_test.sqlite mysql fake
|
||||||
run bin/reddwarf-server \
|
run bin/trove-server \
|
||||||
--fork --config-file=etc/reddwarf/reddwarf.conf.test \
|
--fork --config-file=etc/trove/trove.conf.test \
|
||||||
$@
|
$@
|
||||||
|
|
||||||
|
@ -22,21 +22,21 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
gettext.install('reddwarf', unicode=1)
|
gettext.install('trove', unicode=1)
|
||||||
|
|
||||||
|
|
||||||
# If ../reddwarf/__init__.py exists, add ../ to Python search path, so that
|
# If ../trove/__init__.py exists, add ../ to Python search path, so that
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
os.pardir,
|
os.pardir,
|
||||||
os.pardir))
|
os.pardir))
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'reddwarf', '__init__.py')):
|
if os.path.exists(os.path.join(possible_topdir, 'trove', '__init__.py')):
|
||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.common import wsgi
|
from trove.common import wsgi
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
@ -48,8 +48,8 @@ if __name__ == '__main__':
|
|||||||
try:
|
try:
|
||||||
get_db_api().configure_db(CONF)
|
get_db_api().configure_db(CONF)
|
||||||
conf_file = CONF.find_file(CONF.api_paste_config)
|
conf_file = CONF.find_file(CONF.api_paste_config)
|
||||||
launcher = wsgi.launch('reddwarf', CONF.bind_port or 8779, conf_file,
|
launcher = wsgi.launch('trove', CONF.bind_port or 8779, conf_file,
|
||||||
workers=CONF.reddwarf_api_workers)
|
workers=CONF.trove_api_workers)
|
||||||
launcher.wait()
|
launcher.wait()
|
||||||
except RuntimeError as error:
|
except RuntimeError as error:
|
||||||
import traceback
|
import traceback
|
@ -38,25 +38,25 @@ from nova import utils
|
|||||||
from nova import wsgi
|
from nova import wsgi
|
||||||
from nova.openstack.common import cfg
|
from nova.openstack.common import cfg
|
||||||
|
|
||||||
SERVICE_NAME = "reddwarfapi_database"
|
SERVICE_NAME = "troveapi_database"
|
||||||
|
|
||||||
reddwarf_opts = [
|
trove_opts = [
|
||||||
cfg.StrOpt('reddwarf_api_paste_config',
|
cfg.StrOpt('trove_api_paste_config',
|
||||||
default='reddwarf-api-paste.ini',
|
default='trove-api-paste.ini',
|
||||||
help='Reddwarf API paste config'),
|
help='Reddwarf API paste config'),
|
||||||
# port magic in service.WSGIService the name of the app has to be the same
|
# port magic in service.WSGIService the name of the app has to be the same
|
||||||
# as the name of the service
|
# as the name of the service
|
||||||
cfg.IntOpt('%s_listen_port' % SERVICE_NAME,
|
cfg.IntOpt('%s_listen_port' % SERVICE_NAME,
|
||||||
default=8779,
|
default=8779,
|
||||||
help='Reddwarf API default port'),
|
help='Reddwarf API default port'),
|
||||||
cfg.MultiStrOpt('reddwarf_api_extension',
|
cfg.MultiStrOpt('trove_api_extension',
|
||||||
default=[
|
default=[
|
||||||
'reddwarf.api.database.contrib.standard_extensions'
|
'trove.api.database.contrib.standard_extensions'
|
||||||
],
|
],
|
||||||
help='osapi compute extension to load'),
|
help='osapi compute extension to load'),
|
||||||
]
|
]
|
||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
FLAGS.register_opts(reddwarf_opts)
|
FLAGS.register_opts(trove_opts)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
@ -64,7 +64,7 @@ if __name__ == '__main__':
|
|||||||
flags.FLAGS(sys.argv)
|
flags.FLAGS(sys.argv)
|
||||||
logging.setup()
|
logging.setup()
|
||||||
utils.monkey_patch()
|
utils.monkey_patch()
|
||||||
loader = wsgi.Loader(config_path=FLAGS.reddwarf_api_paste_config)
|
loader = wsgi.Loader(config_path=FLAGS.trove_api_paste_config)
|
||||||
server = service.WSGIService(SERVICE_NAME, loader=loader)
|
server = service.WSGIService(SERVICE_NAME, loader=loader)
|
||||||
service.serve(server)
|
service.serve(server)
|
||||||
service.wait()
|
service.wait()
|
@ -24,19 +24,19 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
# If ../reddwarf/__init__.py exists, add ../ to Python search path, so that
|
# If ../trove/__init__.py exists, add ../ to Python search path, so that
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
os.pardir,
|
os.pardir,
|
||||||
os.pardir))
|
os.pardir))
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'reddwarfclient',
|
if os.path.exists(os.path.join(possible_topdir, 'troveclient',
|
||||||
'__init__.py')):
|
'__init__.py')):
|
||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
|
if os.path.exists(os.path.join(possible_topdir, 'nova', '__init__.py')):
|
||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
|
|
||||||
from reddwarfclient import common
|
from troveclient import common
|
||||||
|
|
||||||
|
|
||||||
oparser = None
|
oparser = None
|
@ -26,23 +26,23 @@ import socket
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
gettext.install('reddwarf', unicode=1)
|
gettext.install('trove', unicode=1)
|
||||||
|
|
||||||
# If ../reddwarf/__init__.py exists, add ../ to Python search path, so that
|
# If ../trove/__init__.py exists, add ../ to Python search path, so that
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
os.pardir,
|
os.pardir,
|
||||||
os.pardir))
|
os.pardir))
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'reddwarf', '__init__.py')):
|
if os.path.exists(os.path.join(possible_topdir, 'trove', '__init__.py')):
|
||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import rpc
|
from trove.common import rpc
|
||||||
from reddwarf.guestagent import dbaas
|
from trove.guestagent import dbaas
|
||||||
from oslo.config import cfg as openstack_cfg
|
from oslo.config import cfg as openstack_cfg
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common import service
|
from trove.openstack.common import service
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
CONF.register_opts([openstack_cfg.StrOpt('guestagent_manager'),
|
CONF.register_opts([openstack_cfg.StrOpt('guestagent_manager'),
|
@ -23,24 +23,24 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
gettext.install('reddwarf', unicode=1)
|
gettext.install('trove', unicode=1)
|
||||||
|
|
||||||
|
|
||||||
# If ../reddwarf/__init__.py exists, add ../ to Python search path, so that
|
# If ../trove/__init__.py exists, add ../ to Python search path, so that
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
os.pardir,
|
os.pardir,
|
||||||
os.pardir))
|
os.pardir))
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'reddwarf', '__init__.py')):
|
if os.path.exists(os.path.join(possible_topdir, 'trove', '__init__.py')):
|
||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
from reddwarf import version
|
from trove import version
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import utils
|
from trove.common import utils
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common import uuidutils
|
from trove.openstack.common import uuidutils
|
||||||
from reddwarf.instance import models as instance_models
|
from trove.instance import models as instance_models
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
@ -83,8 +83,8 @@ class Commands(object):
|
|||||||
|
|
||||||
def db_wipe(self, repo_path, service_name, image_id):
|
def db_wipe(self, repo_path, service_name, image_id):
|
||||||
"""Drops the database and recreates it."""
|
"""Drops the database and recreates it."""
|
||||||
from reddwarf.instance import models
|
from trove.instance import models
|
||||||
from reddwarf.db.sqlalchemy import session
|
from trove.db.sqlalchemy import session
|
||||||
self.db_api.drop_db(CONF)
|
self.db_api.drop_db(CONF)
|
||||||
self.db_sync()
|
self.db_sync()
|
||||||
# Sets up database engine, so the next line will work...
|
# Sets up database engine, so the next line will work...
|
@ -25,23 +25,23 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
gettext.install('reddwarf', unicode=1)
|
gettext.install('trove', unicode=1)
|
||||||
|
|
||||||
|
|
||||||
# If ../reddwarf/__init__.py exists, add ../ to Python search path, so that
|
# If ../trove/__init__.py exists, add ../ to Python search path, so that
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
os.pardir,
|
os.pardir,
|
||||||
os.pardir))
|
os.pardir))
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'reddwarf', '__init__.py')):
|
if os.path.exists(os.path.join(possible_topdir, 'trove', '__init__.py')):
|
||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import rpc
|
from trove.common import rpc
|
||||||
from oslo.config import cfg as openstack_cfg
|
from oslo.config import cfg as openstack_cfg
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common import service
|
from trove.openstack.common import service
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
CONF.register_opts([openstack_cfg.StrOpt('taskmanager_manager')])
|
CONF.register_opts([openstack_cfg.StrOpt('taskmanager_manager')])
|
@ -22,22 +22,22 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
gettext.install('reddwarf', unicode=1)
|
gettext.install('trove', unicode=1)
|
||||||
|
|
||||||
|
|
||||||
# If ../reddwarf/__init__.py exists, add ../ to Python search path, so that
|
# If ../trove/__init__.py exists, add ../ to Python search path, so that
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
os.pardir,
|
os.pardir,
|
||||||
os.pardir))
|
os.pardir))
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'reddwarf', '__init__.py')):
|
if os.path.exists(os.path.join(possible_topdir, 'trove', '__init__.py')):
|
||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from oslo.config import cfg as openstack_cfg
|
from oslo.config import cfg as openstack_cfg
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.common import wsgi
|
from trove.common import wsgi
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
|
|
||||||
extra_opts = [
|
extra_opts = [
|
||||||
openstack_cfg.BoolOpt('fork',
|
openstack_cfg.BoolOpt('fork',
|
||||||
@ -58,8 +58,8 @@ def run_server():
|
|||||||
try:
|
try:
|
||||||
get_db_api().configure_db(CONF)
|
get_db_api().configure_db(CONF)
|
||||||
conf_file = CONF.find_file(CONF.api_paste_config)
|
conf_file = CONF.find_file(CONF.api_paste_config)
|
||||||
launcher = wsgi.launch('reddwarf', CONF.bind_port or 8779, conf_file,
|
launcher = wsgi.launch('trove', CONF.bind_port or 8779, conf_file,
|
||||||
workers=CONF.reddwarf_api_workers)
|
workers=CONF.trove_api_workers)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -25,23 +25,23 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
gettext.install('reddwarf', unicode=1)
|
gettext.install('trove', unicode=1)
|
||||||
|
|
||||||
|
|
||||||
# If ../reddwarf/__init__.py exists, add ../ to Python search path, so that
|
# If ../trove/__init__.py exists, add ../ to Python search path, so that
|
||||||
# it will override what happens to be installed in /usr/(local/)lib/python...
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
||||||
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
||||||
os.pardir,
|
os.pardir,
|
||||||
os.pardir))
|
os.pardir))
|
||||||
if os.path.exists(os.path.join(possible_topdir, 'reddwarf', '__init__.py')):
|
if os.path.exists(os.path.join(possible_topdir, 'trove', '__init__.py')):
|
||||||
sys.path.insert(0, possible_topdir)
|
sys.path.insert(0, possible_topdir)
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import rpc
|
from trove.common import rpc
|
||||||
from oslo.config import cfg as openstack_cfg
|
from oslo.config import cfg as openstack_cfg
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common import service
|
from trove.openstack.common import service
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
CONF.register_opts([openstack_cfg.StrOpt('taskmanager_manager')])
|
CONF.register_opts([openstack_cfg.StrOpt('taskmanager_manager')])
|
@ -1,68 +0,0 @@
|
|||||||
ONE:
|
|
||||||
|
|
||||||
Looks like the on-behalf-of functionality in python novaclient is borked in association w/ keystone
|
|
||||||
*There are 2 different calls to keystone to get token info, and they return different hash's
|
|
||||||
*The service catalog borks out if 'access' is not the main key, but in the 2nd case 'token' is the main key.
|
|
||||||
|
|
||||||
Modified Files
|
|
||||||
* novaclient/service_catalog.py
|
|
||||||
|
|
||||||
Until this is fixed you need to mod python-novaclient after it gets downloaded via devstack
|
|
||||||
###### BEGIN PATCH
|
|
||||||
@@ -44,12 +44,17 @@ class ServiceCatalog(object):
|
|
||||||
raise novaclient.exceptions.EndpointNotFound()
|
|
||||||
|
|
||||||
# We don't always get a service catalog back ...
|
|
||||||
- if not 'serviceCatalog' in self.catalog['access']:
|
|
||||||
+ try:
|
|
||||||
+ if 'serviceCatalog' in self.catalog['access']:
|
|
||||||
+ # Full catalog ...
|
|
||||||
+ catalog = self.catalog['access']['serviceCatalog']
|
|
||||||
+ except KeyError:
|
|
||||||
+ if 'serviceCatalog' in self.catalog['token']:
|
|
||||||
+ # Full catalog ...
|
|
||||||
+ catalog = self.catalog['token']['serviceCatalog']
|
|
||||||
+ if catalog is None:
|
|
||||||
return None
|
|
||||||
|
|
||||||
- # Full catalog ...
|
|
||||||
- catalog = self.catalog['access']['serviceCatalog']
|
|
||||||
-
|
|
||||||
for service in catalog:
|
|
||||||
if service.get("type") != service_type:
|
|
||||||
continue
|
|
||||||
###### END PATCH
|
|
||||||
|
|
||||||
TWO:
|
|
||||||
|
|
||||||
funkyness w/ the extensions. the extensions url itself wont load. Seems to have to do with authorization & tenants.
|
|
||||||
* mitigated in reddwarf/common/extensions.py, see for more information
|
|
||||||
|
|
||||||
|
|
||||||
keystone haves issues with the get endpoints method and causing NotImplementedError/ClientException HTTP/500:
|
|
||||||
###### BEGIN PATCH
|
|
||||||
diff --git a/keystone/service.py b/keystone/service.py
|
|
||||||
index d0d4470..4feb966 100644
|
|
||||||
--- a/keystone/service.py
|
|
||||||
+++ b/keystone/service.py
|
|
||||||
@@ -408,8 +408,17 @@ class TokenController(wsgi.Application):
|
|
||||||
self.token_api.delete_token(context=context, token_id=token_id)
|
|
||||||
|
|
||||||
def endpoints(self, context, token_id):
|
|
||||||
- """Return a list of endpoints available to the token."""
|
|
||||||
- raise NotImplementedError()
|
|
||||||
+ """Return service catalog endpoints."""
|
|
||||||
+ try:
|
|
||||||
+ token_ref = self.token_api.get_token(context=context,
|
|
||||||
+ token_id=token_id)
|
|
||||||
+ except exception.NotFound:
|
|
||||||
+ raise exception.Unauthorized()
|
|
||||||
+
|
|
||||||
+ catalog_ref = self.catalog_api.get_catalog(context,
|
|
||||||
+ token_ref['user']['id'],
|
|
||||||
+ token_ref['tenant']['id'])
|
|
||||||
+ return {'token': {'serviceCatalog': self._format_catalog(catalog_ref)}}
|
|
||||||
|
|
||||||
def _format_authenticate(self, token_ref, roles_ref, catalog_ref):
|
|
||||||
o = self._format_token(token_ref, roles_ref)
|
|
||||||
###### END PATCH
|
|
@ -1,49 +0,0 @@
|
|||||||
EXPECTED_ARGS=1
|
|
||||||
if [ $# -ne $EXPECTED_ARGS ]
|
|
||||||
then
|
|
||||||
echo "Usage: `basename $0` REDDWARF_TOKEN"
|
|
||||||
exit 65
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Be sure to pass in the token for glance auth
|
|
||||||
REDDWARF_TOKEN=$1
|
|
||||||
#
|
|
||||||
# This takes about ~12 minutes to finish
|
|
||||||
sudo apt-get -y install kvm-pxe ubuntu-vm-builder
|
|
||||||
VM_PATH=~/oneiric_mysql_image
|
|
||||||
UBUNTU_DISTRO="ubuntu 11.10"
|
|
||||||
UBUNTU_DISTRO_NAME=oneiric
|
|
||||||
USERNAME=reddwarf
|
|
||||||
rm -fr $VM_PATH
|
|
||||||
|
|
||||||
# Create the guest with the specific files
|
|
||||||
# Assuming this is run from development/bootstrap/bootstrap.sh
|
|
||||||
COPY_FILE=guest-agent-files.txt
|
|
||||||
rm -fr $COPY_FILE
|
|
||||||
# These will be the way the firstboot script phones home to get the latest guest via scp.
|
|
||||||
# See bootstrap_init.sh for more info on what it does
|
|
||||||
echo "$HOME/.ssh/id_rsa.pub /home/$USERNAME/.ssh/id_rsa.pub" >> $COPY_FILE
|
|
||||||
echo "$HOME/.ssh/id_rsa /home/$USERNAME/.ssh/id_rsa" >> $COPY_FILE
|
|
||||||
|
|
||||||
# Now put the pub key in this machines auth keys so the vm can log in to the host (scp)
|
|
||||||
# TODO(hub-cap): make this better using a ssh command or checking for existence
|
|
||||||
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
|
|
||||||
|
|
||||||
#build a qemu image
|
|
||||||
sudo ubuntu-vm-builder qemu $UBUNTU_DISTRO_NAME --addpkg vim \
|
|
||||||
--addpkg mysql-server --addpkg openssh-server \
|
|
||||||
--copy $COPY_FILE --user $USERNAME --pass $USERNAME \
|
|
||||||
--firstboot `pwd`/bootstrap_init.sh -d $VM_PATH
|
|
||||||
|
|
||||||
QCOW_IMAGE=`find $VM_PATH -name '*.qcow2'`
|
|
||||||
|
|
||||||
function get_id () {
|
|
||||||
echo `$@ | awk '{print $6}'`
|
|
||||||
}
|
|
||||||
|
|
||||||
GLANCE_IMAGEID=`get_id glance add name="${UBUNTU_DISTRO_NAME}_mysql_image" is_public=true \
|
|
||||||
container_format=ovf disk_format=qcow2 \
|
|
||||||
distro='"$UBUNTU_DISTRO"' -A $REDDWARF_TOKEN < $QCOW_IMAGE`
|
|
||||||
|
|
||||||
echo "Run this query in your db"
|
|
||||||
echo "update service_images set image_id = '$GLANCE_IMAGEID';"
|
|
@ -1,9 +0,0 @@
|
|||||||
### THINGS TO NOTE
|
|
||||||
# Make sure the host code is in /src
|
|
||||||
# Make sure the username is the same as the vm/host
|
|
||||||
# ** Assuming the username is reddwarf
|
|
||||||
# Make sure the host/vm bridge is at 10.0.0.1, which is the default devstack bridge
|
|
||||||
PATH_TO_HOST=/src/reddwarf
|
|
||||||
|
|
||||||
sudo -u reddwarf scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -r 10.0.0.1:${PATH_TO_HOST}/guest-agent ~reddwarf
|
|
||||||
python ~reddwarf/guest-agent/agent.py
|
|
@ -1,44 +0,0 @@
|
|||||||
# At this point this script is manual. We will need to work this in to a more automated script.
|
|
||||||
# NOTE: Im not sure if we need any of this at this point. i will be checking/deleting it shortly.
|
|
||||||
# see bootstrap/bootstrap.sh
|
|
||||||
|
|
||||||
pkg_install () {
|
|
||||||
echo Installing $@...
|
|
||||||
sudo -E DEBIAN_FRONTEND=noninteractive $HTTP_PROXY apt-get -y --allow-unauthenticated --force-yes install $@
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg_install debootstrap schroot apt-cacher-ng
|
|
||||||
# Make sure we sling up apt-cacher ng so each build is faster
|
|
||||||
echo 'Acquire::http { Proxy "http://127.0.0.1:3142"; };' | sudo tee /etc/apt/apt.conf.d/01proxy
|
|
||||||
sudo /etc/init.d/apt-cacher-ng restart
|
|
||||||
|
|
||||||
# This will wipe an existing schroot conf!
|
|
||||||
echo '
|
|
||||||
[oneiric]
|
|
||||||
description=Ubuntu oneiric
|
|
||||||
location=/var/chroot/oneiric
|
|
||||||
priority=3
|
|
||||||
users=<your user>
|
|
||||||
groups=sbuild
|
|
||||||
root-groups=root' | sudo tee /etc/schroot/schroot.conf
|
|
||||||
|
|
||||||
sudo rm -fr /var/chroot/oneiric
|
|
||||||
sudo debootstrap --variant=buildd oneiric /var/chroot/oneiric http://us.archive.ubuntu.com/ubuntu/
|
|
||||||
|
|
||||||
sudo mkdir /var/chroot/oneiric/root/.ssh
|
|
||||||
sudo cp ~/.ssh/id_rsa.pub /var/chroot/oneiric/root/.ssh/authorized_keys
|
|
||||||
sudo chroot /var/chroot/oneiric
|
|
||||||
apt-get update
|
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated --force-yes apt-get install openssh-server
|
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated --force-yes install mysql-server
|
|
||||||
exit
|
|
||||||
|
|
||||||
#now that u are out of the vm, lets tar it up
|
|
||||||
cd /var/chroot/oneiric/
|
|
||||||
sudo tar czvf ../onieric_mysql.tar.gz .
|
|
||||||
cd ..
|
|
||||||
glance add -A $REDDWARF_TOKEN name="ubuntu-mysql.img" is_public=true type=raw < onieric_mysql.tar.gz
|
|
||||||
|
|
||||||
curl -H"Content-type:application/json" -H'X-Auth-Token:$REDDWARF_TOKEN' \
|
|
||||||
http://0.0.0.0:8779/v0.1/$REDDWARF_TOKEN/instances \
|
|
||||||
-d '{"name":"my_test","image":"$IMAGE_ID","flavor":"1"}'
|
|
@ -1,121 +0,0 @@
|
|||||||
# Steps
|
|
||||||
# 1 install nova via devstack
|
|
||||||
# 2 install reddwarf via this (or eventually mod devstack)
|
|
||||||
# 3 run tempest tests
|
|
||||||
|
|
||||||
#Kind of annoying, but the lxml stuff does not work unless u have these installed
|
|
||||||
sudo apt-get install libxml2-dev libxslt-dev
|
|
||||||
|
|
||||||
cd ~
|
|
||||||
git clone git://github.com/openstack-dev/devstack.git
|
|
||||||
cd devstack
|
|
||||||
# Make sure every devstack instance on a new vm will get the default params for novaclient, paste, etc..
|
|
||||||
# We can change these to external flags in the future
|
|
||||||
echo "MYSQL_PASSWORD=e1a2c042c828d3566d0a
|
|
||||||
RABBIT_PASSWORD=f7999d1955c5014aa32c
|
|
||||||
SERVICE_TOKEN=be19c524ddc92109a224
|
|
||||||
SERVICE_PASSWORD=3de4922d8b6ac5a1aad9
|
|
||||||
ADMIN_PASSWORD=3de4922d8b6ac5a1aad9" > localrc
|
|
||||||
|
|
||||||
./stack.sh
|
|
||||||
|
|
||||||
# Now add a user to keystone that is reddwarf specific. This is what we will use in dev/test to authenticate against keystone
|
|
||||||
# the get_id is stolen from devstack :D
|
|
||||||
function get_id () {
|
|
||||||
echo `$@ | grep id | awk '{print $4}'`
|
|
||||||
}
|
|
||||||
# NOTE THIS AUTH TOKEN NEEDS TO BE CHANGED
|
|
||||||
REDDWARF_TENANT=`get_id keystone --endpoint http://localhost:35357/v2.0 --token be19c524ddc92109a224 tenant-create --name=reddwarf`
|
|
||||||
REDDWARF_USER=`get_id keystone --endpoint http://localhost:35357/v2.0 --token be19c524ddc92109a224 user-create \
|
|
||||||
--name=reddwarf --pass="REDDWARF-PASS" --email=reddwarf@example.com`
|
|
||||||
REDDWARF_ROLE=`get_id keystone --endpoint http://localhost:35357/v2.0 --token be19c524ddc92109a224 role-create --name=reddwarf`
|
|
||||||
keystone --endpoint http://localhost:35357/v2.0 --token be19c524ddc92109a224 user-role-add --tenant_id $REDDWARF_TENANT \
|
|
||||||
--user $REDDWARF_USER \
|
|
||||||
--role $REDDWARF_ROLE
|
|
||||||
# These are the values
|
|
||||||
#REDDWARF_TENANT=reddwarf
|
|
||||||
REDDWARF_TENANT=`keystone --endpoint http://localhost:35357/v2.0 --token be19c524ddc92109a224 tenant-list| grep reddwarf | cut -d ' ' -f 2`
|
|
||||||
echo $REDDWARF_TENANT
|
|
||||||
REDDWARF_USER=`keystone --endpoint http://localhost:35357/v2.0 --token be19c524ddc92109a224 user-list| grep reddwarf | cut -d ' ' -f 2`
|
|
||||||
echo $REDDWARF_USER
|
|
||||||
REDDWARF_TOKEN=$(curl -d '{"auth":{"passwordCredentials":{"username": "reddwarf", "password": "REDDWARF-PASS"},"tenantName":"reddwarf"}}' -H "Content-type: application/json" http://localhost:35357/v2.0/tokens | python -mjson.tool | grep id | tr -s ' ' | cut -d ' ' -f 3 | sed s/\"/''/g | awk 'NR==2' | cut -d ',' -f 1)
|
|
||||||
echo $REDDWARF_TOKEN
|
|
||||||
|
|
||||||
|
|
||||||
# Now attempt a login
|
|
||||||
#curl -d '{"auth":{"passwordCredentials":{"username": "reddwarf", "password": "REDDWARF-PASS"},"tenantName":"reddwarf"}}' \
|
|
||||||
# -H "Content-type: application/json" http://localhost:35357/v2.0/tokens | python -mjson.tool
|
|
||||||
|
|
||||||
# now get a list of instances, which connects over python-novaclient to nova
|
|
||||||
# NOTE THIS AUTH TOKEN NEEDS TO BE CHANGED
|
|
||||||
# Also note that keystone uses the tenant id now and _not_ the name
|
|
||||||
# list instances
|
|
||||||
# curl -H"X-Auth-Token:$REDDWARF_TOKEN" http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/instances | python -mjson.tool
|
|
||||||
# old create instance:
|
|
||||||
# curl -H"Content-type:application/json" -H"X-Auth-Token:$REDDWARF_TOKEN" http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/instances -d '{"name":"my_test","flavor":"1"}' | python -mjson.tool
|
|
||||||
# create instance:
|
|
||||||
# curl -H"Content-type:application/json" -H"X-Auth-Token:$REDDWARF_TOKEN" http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/instances -d '{"instance": {"databases": [{"character_set": "utf8", "collate": "utf8_general_ci", "name": "sampledb"}, {"name": "nextround"}], "flavorRef": "http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/flavors/1", "name": "json_rack_instance", "volume": {"size": "2"}}}'| python -mjson.tool
|
|
||||||
# {
|
|
||||||
# "instance": {
|
|
||||||
# "databases": [
|
|
||||||
# {
|
|
||||||
# "character_set": "utf8",
|
|
||||||
# "collate": "utf8_general_ci",
|
|
||||||
# "name": "sampledb"
|
|
||||||
# },
|
|
||||||
# {
|
|
||||||
# "name": "nextround"
|
|
||||||
# }
|
|
||||||
# ],
|
|
||||||
# "flavorRef": "http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/flavors/1",
|
|
||||||
# "name": "json_rack_instance",
|
|
||||||
# "volume": {
|
|
||||||
# "size": "2"
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
# }
|
|
||||||
|
|
||||||
# DELETE INSTANCE
|
|
||||||
# curl -H"X-Auth-Token:$REDDWARF_TOKEN" http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/instances/id -X DELETE | python -mjson.tool
|
|
||||||
|
|
||||||
|
|
||||||
# update the etc/reddwarf/reddwarf.conf.sample
|
|
||||||
# add this config setting
|
|
||||||
# reddwarf_tenant_id = f5f71240a97c411e977452370422d7cc
|
|
||||||
|
|
||||||
# sync up the database on first run!
|
|
||||||
# bin/reddwarf-manage --config-file=etc/reddwarf/reddwarf.conf.sample db_sync
|
|
||||||
|
|
||||||
# Also, you should start up the api node like this
|
|
||||||
# bin/reddwarf-server --config-file=etc/reddwarf/reddwarf.conf.sample
|
|
||||||
|
|
||||||
# need to build the image before we can create a new instance
|
|
||||||
# need an rsa key to build the
|
|
||||||
|
|
||||||
# ssh-keygen
|
|
||||||
|
|
||||||
# first time build the image for reddwarf
|
|
||||||
# ./bootstrap/bootstrap.sh
|
|
||||||
|
|
||||||
##### re-add image manually #####
|
|
||||||
VM_PATH=~/oneiric_mysql_image
|
|
||||||
UBUNTU_DISTRO="ubuntu 11.10"
|
|
||||||
UBUNTU_DISTRO_NAME=oneiric
|
|
||||||
QCOW_IMAGE=`find $VM_PATH -name '*.qcow2'`
|
|
||||||
function get_glance_id () {
|
|
||||||
echo `$@ | awk '{print $6}'`
|
|
||||||
}
|
|
||||||
glance add name="oneiric_mysql_image" is_public=true container_format=ovf disk_format=qcow2 distro='"ubuntu 11.10"' -A $REDDWARF_TOKEN < $QCOW_IMAGE
|
|
||||||
# GLANCE_IMAGEID=
|
|
||||||
echo "updating your database - $GLANCE_IMAGEID"
|
|
||||||
sqlite3 /src/reddwarf_test.sqlite "INSERT INTO service_images VALUES('1', 'database', '$GLANCE_IMAGEID');"
|
|
||||||
#sqlite3 /src/reddwarf_test.sqlite "UPDATE service_images set image_id='$GLANCE_IMAGEID';"
|
|
||||||
echo "done GLANCE IMAGE ID = $GLANCE_IMAGEID"
|
|
||||||
|
|
||||||
# add the image to the reddwarf database
|
|
||||||
# get the image id from glance
|
|
||||||
# glance index -A $REDDWARF_TOKEN
|
|
||||||
# REDDWARF_IMAGE_ID=a92615d7-a8ba-45ff-b29f-ec2baf6b8348
|
|
||||||
# (sqlite)
|
|
||||||
# sqlite3 reddwarf_test.sqlite "insert into service_images values ('$REDDWARF_IMAGE_ID','database', '$REDDWARF_IMAGE_ID');"
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
function reddwarf_auth {
|
|
||||||
REDDWARF_TENANT=`keystone --endpoint http://localhost:35357/v2.0 --token be19c524ddc92109a224 tenant-list| grep reddwarf | cut -d ' ' -f 2`
|
|
||||||
REDDWARF_USER=`keystone --endpoint http://localhost:35357/v2.0 --token be19c524ddc92109a224 user-list| grep reddwarf | cut -d ' ' -f 2`
|
|
||||||
REDDWARF_TOKEN=$(curl -d '{"auth":{"passwordCredentials":{"username": "reddwarf", "password": "REDDWARF-PASS"},"tenantName":"reddwarf"}}' -H "Content-type: application/json" http://localhost:35357/v2.0/tokens | python -mjson.tool | grep id | tr -s ' ' | cut -d ' ' -f 3 | sed s/\"/''/g | awk 'NR==2' | cut -d ',' -f 1)
|
|
||||||
export REDDWARF_TENANT
|
|
||||||
export REDDWARF_USER
|
|
||||||
export REDDWARF_TOKEN
|
|
||||||
echo "REDDWARF_TENANT = $REDDWARF_TENANT"
|
|
||||||
echo "REDDWARF_USER = $REDDWARF_USER"
|
|
||||||
echo "REDDWARF_TOKEN = $REDDWARF_TOKEN"
|
|
||||||
}
|
|
||||||
|
|
||||||
function create_instance {
|
|
||||||
FLAVOR_ID=$1
|
|
||||||
curl -H"Content-type:application/json" -H"X-Auth-Token:$REDDWARF_TOKEN" http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/instances -d '{"instance": {"databases": [{"character_set": "utf8", "collate": "utf8_general_ci", "name": "sampledb"}, {"name": "nextround"}], "flavorRef": "http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/flavors/1", "name": "json_rack_instance"}}' | python -mjson.tool
|
|
||||||
}
|
|
||||||
|
|
||||||
function list_instances {
|
|
||||||
curl -H"X-Auth-Token:$REDDWARF_TOKEN" http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/instances | python -mjson.tool
|
|
||||||
}
|
|
||||||
|
|
||||||
function delete_instance {
|
|
||||||
INSTANCE_ID=$1
|
|
||||||
curl -H"X-Auth-Token:$REDDWARF_TOKEN" -H"ACCEPT:application/json" http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/instances/$INSTANCE_ID -X DELETE | python -mjson.tool
|
|
||||||
}
|
|
||||||
|
|
||||||
function show_instance {
|
|
||||||
INSTANCE_ID=$1
|
|
||||||
curl -H"X-Auth-Token:$REDDWARF_TOKEN" -H"ACCEPT:application/json" http://0.0.0.0:8779/v0.1/$REDDWARF_TENANT/instances/$INSTANCE_ID | python -mjson.tool
|
|
||||||
}
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
|||||||
--reddwarf_api_paste_config=etc/nova/reddwarf-api-paste.ini
|
|
||||||
--osapi_compute_listen_port=9000
|
|
||||||
--sql_connection=mysql://root:e1a2c042c828d3566d0a@127.0.0.1/nova
|
|
||||||
|
|
||||||
|
|
||||||
# Glance
|
|
||||||
#--image_service=nova.image.glance.GlanceImageService
|
|
||||||
#
|
|
||||||
# Nova Network
|
|
||||||
#--network_manager=reddwarf.network.manager.FlatManager
|
|
||||||
#--fixed_range=10.0.0.0/26
|
|
||||||
#--network_size=1
|
|
||||||
#--flat_network_bridge=br100
|
|
||||||
|
|
||||||
# Nova Scheduler
|
|
||||||
#--scheduler_driver=reddwarf.scheduler.simple.UnforgivingMemoryScheduler
|
|
||||||
#--max_instance_memory_mb=6144
|
|
||||||
#
|
|
||||||
# Nova Volume
|
|
||||||
# Volume configuration for vagrant vm
|
|
||||||
#--volume_manager=reddwarf.volume.manager.ReddwarfVolumeManager
|
|
||||||
#--volume_driver=reddwarf.tests.volume.driver.ISCSITestDriver
|
|
||||||
#--use_local_volumes=False
|
|
||||||
#--san_thin_provision=False
|
|
||||||
#--san_ip=33.33.33.11
|
|
||||||
#--san_login=vagrant
|
|
||||||
#--san_privatekey=/home/vagrant/.ssh/id_rsa
|
|
||||||
#
|
|
||||||
# Reddwarf Compute Manager
|
|
||||||
#--compute_manager=reddwarf.compute.manager.ReddwarfComputeManager
|
|
||||||
#
|
|
||||||
# Nova Compute
|
|
||||||
#--connection_type=openvz
|
|
||||||
#--ovz_ve_private_dir=/var/lib/vz/private/
|
|
||||||
#--lock_path=/tmp
|
|
||||||
#--resume_guests_state_on_host_boot=True
|
|
||||||
##--start_guests_on_host_boot=True
|
|
||||||
#
|
|
||||||
## API
|
|
||||||
#--api_paste_config=/home/vagrant/api-paste_keystone.ini
|
|
||||||
|
|
||||||
#--enabled_apis=osapi
|
|
||||||
#--allow_admin_api=True
|
|
||||||
#--reddwarf_auth_cache_expire_time=300
|
|
||||||
#
|
|
||||||
## Quota Limits
|
|
||||||
#--quota_instances=10
|
|
||||||
#--quota_cores=20
|
|
||||||
#--quota_ram=51200
|
|
||||||
#--quota_volumes=10
|
|
||||||
#--quota_gigabytes=10000
|
|
||||||
#--quota_floating_ips=10
|
|
||||||
#
|
|
||||||
## Infrastructure Services
|
|
||||||
#--sql_connection=mysql://nova:novapass@10.0.4.15/nova
|
|
||||||
#--sql_min_pool_size=1
|
|
||||||
#--rabbit_host=10.0.4.15
|
|
||||||
#
|
|
||||||
## Logging
|
|
||||||
#--logfile=/vagrant/nova.log
|
|
||||||
#--verbose
|
|
||||||
#--notification_driver=reddwarf.notifier.logfile_notifier
|
|
||||||
#--notifier_logfile=/vagrant/notification.log
|
|
||||||
#
|
|
||||||
## Reaper config
|
|
||||||
#--reaper_driver=reddwarf.reaper.driver.ReddwarfReaperDriver
|
|
||||||
|
|
||||||
#Extra ending line needed so that other conf files can be appended to this one.
|
|
@ -1,133 +0,0 @@
|
|||||||
############
|
|
||||||
# Metadata #
|
|
||||||
############
|
|
||||||
[composite:metadata]
|
|
||||||
use = egg:Paste#urlmap
|
|
||||||
/: metaversions
|
|
||||||
/latest: meta
|
|
||||||
/2007-01-19: meta
|
|
||||||
/2007-03-01: meta
|
|
||||||
/2007-08-29: meta
|
|
||||||
/2007-10-10: meta
|
|
||||||
/2007-12-15: meta
|
|
||||||
/2008-02-01: meta
|
|
||||||
/2008-09-01: meta
|
|
||||||
/2009-04-04: meta
|
|
||||||
|
|
||||||
[pipeline:metaversions]
|
|
||||||
pipeline = ec2faultwrap logrequest metaverapp
|
|
||||||
|
|
||||||
[pipeline:meta]
|
|
||||||
pipeline = ec2faultwrap logrequest metaapp
|
|
||||||
|
|
||||||
[app:metaverapp]
|
|
||||||
paste.app_factory = nova.api.metadata.handler:Versions.factory
|
|
||||||
|
|
||||||
[app:metaapp]
|
|
||||||
paste.app_factory = nova.api.metadata.handler:MetadataRequestHandler.factory
|
|
||||||
|
|
||||||
#######
|
|
||||||
# EC2 #
|
|
||||||
#######
|
|
||||||
|
|
||||||
[composite:ec2]
|
|
||||||
use = egg:Paste#urlmap
|
|
||||||
/services/Cloud: ec2cloud
|
|
||||||
|
|
||||||
[pipeline:ec2cloud]
|
|
||||||
pipeline = ec2faultwrap logrequest ec2noauth cloudrequest authorizer validator ec2executor
|
|
||||||
# NOTE(vish): use the following pipeline for deprecated auth
|
|
||||||
# pipeline = ec2faultwrap logrequest authenticate cloudrequest authorizer validator ec2executor
|
|
||||||
# NOTE(vish): use the following pipeline for keystone auth
|
|
||||||
# pipeline = ec2faultwrap logrequest ec2keystoneauth cloudrequest authorizer validator ec2executor
|
|
||||||
|
|
||||||
[filter:ec2faultwrap]
|
|
||||||
paste.filter_factory = nova.api.ec2:FaultWrapper.factory
|
|
||||||
|
|
||||||
[filter:logrequest]
|
|
||||||
paste.filter_factory = nova.api.ec2:RequestLogging.factory
|
|
||||||
|
|
||||||
[filter:ec2lockout]
|
|
||||||
paste.filter_factory = nova.api.ec2:Lockout.factory
|
|
||||||
|
|
||||||
[filter:totoken]
|
|
||||||
paste.filter_factory = nova.api.ec2:EC2Token.factory
|
|
||||||
|
|
||||||
[filter:ec2keystoneauth]
|
|
||||||
paste.filter_factory = nova.api.ec2:EC2KeystoneAuth.factory
|
|
||||||
|
|
||||||
[filter:ec2noauth]
|
|
||||||
paste.filter_factory = nova.api.ec2:NoAuth.factory
|
|
||||||
|
|
||||||
[filter:authenticate]
|
|
||||||
paste.filter_factory = nova.api.ec2:Authenticate.factory
|
|
||||||
|
|
||||||
[filter:cloudrequest]
|
|
||||||
controller = nova.api.ec2.cloud.CloudController
|
|
||||||
paste.filter_factory = nova.api.ec2:Requestify.factory
|
|
||||||
|
|
||||||
[filter:authorizer]
|
|
||||||
paste.filter_factory = nova.api.ec2:Authorizer.factory
|
|
||||||
|
|
||||||
[filter:validator]
|
|
||||||
paste.filter_factory = nova.api.ec2:Validator.factory
|
|
||||||
|
|
||||||
[app:ec2executor]
|
|
||||||
paste.app_factory = nova.api.ec2:Executor.factory
|
|
||||||
|
|
||||||
#############
|
|
||||||
# Openstack #
|
|
||||||
#############
|
|
||||||
|
|
||||||
[composite:reddwarfapi_database]
|
|
||||||
use = call:nova.api.openstack.urlmap:urlmap_factory
|
|
||||||
/: reddwarfdatabaseversions
|
|
||||||
#/v1.1: reddwarf_database_api_v2
|
|
||||||
/v2: reddwarf_database_api_v2
|
|
||||||
|
|
||||||
[pipeline:reddwarf_database_api_v2]
|
|
||||||
pipeline = faultwrap authtoken keystonecontext reddwarf_database_app_v2
|
|
||||||
#pipeline = faultwrap noauth ratelimit reddwarf_database_app_v2
|
|
||||||
# NOTE(vish): use the following pipeline for deprecated auth
|
|
||||||
# pipeline = faultwrap auth ratelimit reddwarf_database_app_v2
|
|
||||||
# NOTE(vish): use the following pipeline for keystone auth
|
|
||||||
# pipeline = faultwrap authtoken keystonecontext ratelimit reddwarf_database_app_v2
|
|
||||||
|
|
||||||
[filter:faultwrap]
|
|
||||||
paste.filter_factory = nova.api.openstack:FaultWrapper.factory
|
|
||||||
|
|
||||||
[filter:auth]
|
|
||||||
paste.filter_factory = nova.api.openstack.auth:AuthMiddleware.factory
|
|
||||||
|
|
||||||
[filter:noauth]
|
|
||||||
paste.filter_factory = nova.api.openstack.auth:NoAuthMiddleware.factory
|
|
||||||
|
|
||||||
[filter:ratelimit]
|
|
||||||
paste.filter_factory = nova.api.openstack.compute.limits:RateLimitingMiddleware.factory
|
|
||||||
|
|
||||||
[app:reddwarf_database_app_v2]
|
|
||||||
paste.app_factory = reddwarf.api.database:APIRouter.factory
|
|
||||||
|
|
||||||
[pipeline:reddwarfdatabaseversions]
|
|
||||||
pipeline = faultwrap reddwarfdatabaseversionapp
|
|
||||||
|
|
||||||
[app:reddwarfdatabaseversionapp]
|
|
||||||
paste.app_factory = reddwarf.api.database.versions:Versions.factory
|
|
||||||
|
|
||||||
##########
|
|
||||||
# Shared #
|
|
||||||
##########
|
|
||||||
|
|
||||||
[filter:keystonecontext]
|
|
||||||
paste.filter_factory = nova.api.auth:NovaKeystoneContext.factory
|
|
||||||
|
|
||||||
[filter:authtoken]
|
|
||||||
paste.filter_factory = keystone.middleware.auth_token: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/
|
|
||||||
admin_token = be19c524ddc92109a224
|
|
@ -1,41 +0,0 @@
|
|||||||
[composite:reddwarf]
|
|
||||||
use = call:reddwarf.common.wsgi:versioned_urlmap
|
|
||||||
/: versions
|
|
||||||
/v1.0: reddwarfapi
|
|
||||||
|
|
||||||
[app:versions]
|
|
||||||
paste.app_factory = reddwarf.versions:app_factory
|
|
||||||
|
|
||||||
[pipeline:reddwarfapi]
|
|
||||||
pipeline = faultwrapper tokenauth authorization contextwrapper ratelimit extensions reddwarfapp
|
|
||||||
#pipeline = debug extensions reddwarfapp
|
|
||||||
|
|
||||||
[filter:extensions]
|
|
||||||
paste.filter_factory = reddwarf.common.extensions:factory
|
|
||||||
|
|
||||||
[filter:tokenauth]
|
|
||||||
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
|
|
||||||
auth_host = 127.0.0.1
|
|
||||||
auth_port = 35357
|
|
||||||
auth_protocol = http
|
|
||||||
admin_token = be19c524ddc92109a224
|
|
||||||
signing_dir = /tmp/keystone-signing-nova
|
|
||||||
|
|
||||||
[filter:authorization]
|
|
||||||
paste.filter_factory = reddwarf.common.auth:AuthorizationMiddleware.factory
|
|
||||||
|
|
||||||
[filter:contextwrapper]
|
|
||||||
paste.filter_factory = reddwarf.common.wsgi:ContextMiddleware.factory
|
|
||||||
|
|
||||||
[filter:faultwrapper]
|
|
||||||
paste.filter_factory = reddwarf.common.wsgi:FaultWrapper.factory
|
|
||||||
|
|
||||||
[filter:ratelimit]
|
|
||||||
paste.filter_factory = reddwarf.common.limits:RateLimitingMiddleware.factory
|
|
||||||
|
|
||||||
[app:reddwarfapp]
|
|
||||||
paste.app_factory = reddwarf.common.api:app_factory
|
|
||||||
|
|
||||||
#Add this filter to log request and response for debugging
|
|
||||||
[filter:debug]
|
|
||||||
paste.filter_factory = reddwarf.common.wsgi:Debug
|
|
@ -1,45 +0,0 @@
|
|||||||
[composite:reddwarf]
|
|
||||||
use = call:reddwarf.common.wsgi:versioned_urlmap
|
|
||||||
/: versions
|
|
||||||
/v1.0: reddwarfapi
|
|
||||||
|
|
||||||
[app:versions]
|
|
||||||
paste.app_factory = reddwarf.versions:app_factory
|
|
||||||
|
|
||||||
[pipeline:reddwarfapi]
|
|
||||||
pipeline = faultwrapper tokenauth authorization contextwrapper extensions ratelimit reddwarfapp
|
|
||||||
#pipeline = debug extensions reddwarfapp
|
|
||||||
|
|
||||||
[filter:extensions]
|
|
||||||
paste.filter_factory = reddwarf.common.extensions:factory
|
|
||||||
|
|
||||||
[filter:tokenauth]
|
|
||||||
paste.filter_factory = reddwarf.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/
|
|
||||||
admin_token = be19c524ddc92109a224
|
|
||||||
signing_dir = /tmp/keystone-signing-reddwarf
|
|
||||||
|
|
||||||
[filter:authorization]
|
|
||||||
paste.filter_factory = reddwarf.common.auth:AuthorizationMiddleware.factory
|
|
||||||
|
|
||||||
[filter:contextwrapper]
|
|
||||||
paste.filter_factory = reddwarf.common.wsgi:ContextMiddleware.factory
|
|
||||||
|
|
||||||
[filter:faultwrapper]
|
|
||||||
paste.filter_factory = reddwarf.common.wsgi:FaultWrapper.factory
|
|
||||||
|
|
||||||
[filter:ratelimit]
|
|
||||||
paste.filter_factory = reddwarf.common.limits:RateLimitingMiddleware.factory
|
|
||||||
|
|
||||||
[app:reddwarfapp]
|
|
||||||
paste.app_factory = reddwarf.common.api:app_factory
|
|
||||||
|
|
||||||
#Add this filter to log request and response for debugging
|
|
||||||
[filter:debug]
|
|
||||||
paste.filter_factory = reddwarf.common.wsgi:Debug
|
|
@ -18,22 +18,22 @@
|
|||||||
"keystone_code_root":"/opt/stack/keystone",
|
"keystone_code_root":"/opt/stack/keystone",
|
||||||
"keystone_conf":"/etc/keystone/keystone.conf",
|
"keystone_conf":"/etc/keystone/keystone.conf",
|
||||||
"keystone_use_combined":true,
|
"keystone_use_combined":true,
|
||||||
"reddwarf_code_root":"/opt/stack/reddwarf",
|
"trove_code_root":"/opt/stack/trove",
|
||||||
"reddwarf_conf":"/tmp/reddwarf.conf",
|
"trove_conf":"/tmp/trove.conf",
|
||||||
"reddwarf_version":"v1.0",
|
"trove_version":"v1.0",
|
||||||
"reddwarf_api_updated":"2012-08-01T00:00:00Z",
|
"trove_api_updated":"2012-08-01T00:00:00Z",
|
||||||
"reddwarf_must_have_volume":false,
|
"trove_must_have_volume":false,
|
||||||
"reddwarf_can_have_volume":true,
|
"trove_can_have_volume":true,
|
||||||
"reddwarf_main_instance_has_volume": true,
|
"trove_main_instance_has_volume": true,
|
||||||
"reddwarf_max_accepted_volume_size": 25,
|
"trove_max_accepted_volume_size": 25,
|
||||||
"reddwarf_max_instances_per_user": 55,
|
"trove_max_instances_per_user": 55,
|
||||||
"reddwarf_max_volumes_per_user": 100,
|
"trove_max_volumes_per_user": 100,
|
||||||
"use_reaper":false,
|
"use_reaper":false,
|
||||||
"root_removed_from_instance_api": true,
|
"root_removed_from_instance_api": true,
|
||||||
"root_timestamp_disabled": false,
|
"root_timestamp_disabled": false,
|
||||||
"openvz_disabled": false,
|
"openvz_disabled": false,
|
||||||
"management_api_disabled": true,
|
"management_api_disabled": true,
|
||||||
|
|
||||||
"dns_instance_entry_factory":"reddwarf.dns.rsdns.driver.RsDnsInstanceEntryFactory",
|
"dns_instance_entry_factory":"trove.dns.rsdns.driver.RsDnsInstanceEntryFactory",
|
||||||
"sentinel": null
|
"sentinel": null
|
||||||
}
|
}
|
||||||
|
@ -5,15 +5,15 @@
|
|||||||
"dbaas_url":"http://localhost:8779/v1.0",
|
"dbaas_url":"http://localhost:8779/v1.0",
|
||||||
"version_url":"http://localhost:8779",
|
"version_url":"http://localhost:8779",
|
||||||
"nova_auth_url":"http://localhost:8779/v1.0/auth",
|
"nova_auth_url":"http://localhost:8779/v1.0/auth",
|
||||||
"reddwarf_auth_url":"http://localhost:8779/v1.0/auth",
|
"trove_auth_url":"http://localhost:8779/v1.0/auth",
|
||||||
"reddwarf_client_insecure":false,
|
"trove_client_insecure":false,
|
||||||
"auth_strategy":"fake",
|
"auth_strategy":"fake",
|
||||||
|
|
||||||
"reddwarf_version":"v1.0",
|
"trove_version":"v1.0",
|
||||||
"reddwarf_api_updated":"2012-08-01T00:00:00Z",
|
"trove_api_updated":"2012-08-01T00:00:00Z",
|
||||||
|
|
||||||
"reddwarf_dns_support":false,
|
"trove_dns_support":false,
|
||||||
"reddwarf_ip_support":false,
|
"trove_ip_support":false,
|
||||||
|
|
||||||
"nova_client": null,
|
"nova_client": null,
|
||||||
|
|
||||||
@ -26,7 +26,7 @@
|
|||||||
"tenant_id":"admin-1000",
|
"tenant_id":"admin-1000",
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"is_admin":true,
|
"is_admin":true,
|
||||||
"services": ["reddwarf"]
|
"services": ["trove"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -36,7 +36,7 @@
|
|||||||
"tenant_id":"2500",
|
"tenant_id":"2500",
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"is_admin":false,
|
"is_admin":false,
|
||||||
"services": ["reddwarf"]
|
"services": ["trove"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -46,7 +46,7 @@
|
|||||||
"tenant_id":"3000",
|
"tenant_id":"3000",
|
||||||
"requirements": {
|
"requirements": {
|
||||||
"is_admin":false,
|
"is_admin":false,
|
||||||
"services": ["reddwarf"]
|
"services": ["trove"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"include-files": ["localhost.test.conf"],
|
"include-files": ["localhost.test.conf"],
|
||||||
"reddwarf_client_cls": "reddwarfclient.xml.ReddwarfXmlClient"
|
"trove_client_cls": "troveclient.xml.TroveXmlClient"
|
||||||
}
|
}
|
||||||
|
41
etc/trove/api-paste.ini
Normal file
41
etc/trove/api-paste.ini
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
[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 tokenauth authorization contextwrapper ratelimit extensions troveapp
|
||||||
|
#pipeline = debug extensions troveapp
|
||||||
|
|
||||||
|
[filter:extensions]
|
||||||
|
paste.filter_factory = trove.common.extensions:factory
|
||||||
|
|
||||||
|
[filter:tokenauth]
|
||||||
|
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
|
||||||
|
auth_host = 127.0.0.1
|
||||||
|
auth_port = 35357
|
||||||
|
auth_protocol = http
|
||||||
|
admin_token = be19c524ddc92109a224
|
||||||
|
signing_dir = /tmp/keystone-signing-nova
|
||||||
|
|
||||||
|
[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.common.limits:RateLimitingMiddleware.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
|
45
etc/trove/api-paste.ini.test
Normal file
45
etc/trove/api-paste.ini.test
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
[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 tokenauth authorization contextwrapper extensions ratelimit troveapp
|
||||||
|
#pipeline = debug extensions troveapp
|
||||||
|
|
||||||
|
[filter:extensions]
|
||||||
|
paste.filter_factory = trove.common.extensions:factory
|
||||||
|
|
||||||
|
[filter:tokenauth]
|
||||||
|
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/
|
||||||
|
admin_token = be19c524ddc92109a224
|
||||||
|
signing_dir = /tmp/keystone-signing-trove
|
||||||
|
|
||||||
|
[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.common.limits:RateLimitingMiddleware.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
|
@ -17,9 +17,9 @@ rabbit_password=f7999d1955c5014aa32c
|
|||||||
# SQLAlchemy connection string for the reference implementation
|
# SQLAlchemy connection string for the reference implementation
|
||||||
# registry server. Any valid SQLAlchemy connection string is fine.
|
# registry server. Any valid SQLAlchemy connection string is fine.
|
||||||
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
|
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
|
||||||
#sql_connection = sqlite:///reddwarf_test.sqlite
|
#sql_connection = sqlite:///trove_test.sqlite
|
||||||
sql_connection = mysql://root:e1a2c042c828d3566d0a@10.0.0.1/reddwarf?charset=utf8
|
sql_connection = mysql://root:e1a2c042c828d3566d0a@10.0.0.1/trove?charset=utf8
|
||||||
#sql_connection = postgresql://reddwarf:reddwarf@10.0.0.1/reddwarf
|
#sql_connection = postgresql://trove:trove@10.0.0.1/trove
|
||||||
|
|
||||||
# Period in seconds after which SQLAlchemy should reestablish its connection
|
# Period in seconds after which SQLAlchemy should reestablish its connection
|
||||||
# to the database.
|
# to the database.
|
||||||
@ -31,10 +31,10 @@ sql_connection = mysql://root:e1a2c042c828d3566d0a@10.0.0.1/reddwarf?charset=utf
|
|||||||
sql_idle_timeout = 3600
|
sql_idle_timeout = 3600
|
||||||
|
|
||||||
#DB Api Implementation
|
#DB Api Implementation
|
||||||
db_api_implementation = "reddwarf.db.sqlalchemy.api"
|
db_api_implementation = "trove.db.sqlalchemy.api"
|
||||||
|
|
||||||
# Path to the extensions
|
# Path to the extensions
|
||||||
api_extensions_path = reddwarf/extensions
|
api_extensions_path = trove/extensions
|
||||||
|
|
||||||
# Configuration options for talking to nova via the novaclient.
|
# Configuration options for talking to nova via the novaclient.
|
||||||
# These options are for an admin user in your keystone config.
|
# These options are for an admin user in your keystone config.
|
||||||
@ -43,11 +43,11 @@ api_extensions_path = reddwarf/extensions
|
|||||||
nova_proxy_admin_user = admin
|
nova_proxy_admin_user = admin
|
||||||
nova_proxy_admin_pass = 3de4922d8b6ac5a1aad9
|
nova_proxy_admin_pass = 3de4922d8b6ac5a1aad9
|
||||||
nova_proxy_admin_tenant_name = admin
|
nova_proxy_admin_tenant_name = admin
|
||||||
reddwarf_auth_url = http://0.0.0.0:5000/v2.0
|
trove_auth_url = http://0.0.0.0:5000/v2.0
|
||||||
swift_url = http://10.0.0.1:8080/v1/AUTH_
|
swift_url = http://10.0.0.1:8080/v1/AUTH_
|
||||||
|
|
||||||
# Manager impl for the taskmanager
|
# Manager impl for the taskmanager
|
||||||
guestagent_manager=reddwarf.guestagent.manager.Manager
|
guestagent_manager=trove.guestagent.manager.Manager
|
||||||
|
|
||||||
# Root configuration
|
# Root configuration
|
||||||
root_grant = ALL
|
root_grant = ALL
|
||||||
@ -66,10 +66,10 @@ log_file = logfile.txt
|
|||||||
|
|
||||||
# Strategy information for backups
|
# Strategy information for backups
|
||||||
backup_strategy = InnoBackupEx
|
backup_strategy = InnoBackupEx
|
||||||
backup_namespace = reddwarf.guestagent.strategies.backup.impl
|
backup_namespace = trove.guestagent.strategies.backup.impl
|
||||||
restore_namespace = reddwarf.guestagent.strategies.restore.impl
|
restore_namespace = trove.guestagent.strategies.restore.impl
|
||||||
storage_strategy = SwiftStorage
|
storage_strategy = SwiftStorage
|
||||||
storage_namespace = reddwarf.guestagent.strategies.storage.swift
|
storage_namespace = trove.guestagent.strategies.storage.swift
|
||||||
backup_swift_container = database_backups
|
backup_swift_container = database_backups
|
||||||
backup_use_gzip_compression = True
|
backup_use_gzip_compression = True
|
||||||
backup_use_openssl_encryption = True
|
backup_use_openssl_encryption = True
|
@ -11,8 +11,8 @@ rabbit_password=f7999d1955c5014aa32c
|
|||||||
# SQLAlchemy connection string for the reference implementation
|
# SQLAlchemy connection string for the reference implementation
|
||||||
# registry server. Any valid SQLAlchemy connection string is fine.
|
# registry server. Any valid SQLAlchemy connection string is fine.
|
||||||
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
|
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
|
||||||
sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/reddwarf
|
sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/trove
|
||||||
# sql_connection = mysql://root:root@localhost/reddwarf
|
# sql_connection = mysql://root:root@localhost/trove
|
||||||
|
|
||||||
# Period in seconds after which SQLAlchemy should reestablish its connection
|
# Period in seconds after which SQLAlchemy should reestablish its connection
|
||||||
# to the database.
|
# to the database.
|
||||||
@ -24,16 +24,16 @@ sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/reddwarf
|
|||||||
sql_idle_timeout = 3600
|
sql_idle_timeout = 3600
|
||||||
|
|
||||||
#DB Api Implementation
|
#DB Api Implementation
|
||||||
db_api_implementation = reddwarf.db.sqlalchemy.api
|
db_api_implementation = trove.db.sqlalchemy.api
|
||||||
|
|
||||||
# Configuration options for talking to nova via the novaclient.
|
# Configuration options for talking to nova via the novaclient.
|
||||||
reddwarf_auth_url = http://0.0.0.0:5000/v2.0
|
trove_auth_url = http://0.0.0.0:5000/v2.0
|
||||||
nova_compute_url = http://localhost:8774/v2
|
nova_compute_url = http://localhost:8774/v2
|
||||||
nova_volume_url = http://localhost:8776/v1
|
nova_volume_url = http://localhost:8776/v1
|
||||||
swift_url = http://localhost:8080/v1/AUTH_
|
swift_url = http://localhost:8080/v1/AUTH_
|
||||||
|
|
||||||
# Config options for enabling volume service
|
# Config options for enabling volume service
|
||||||
reddwarf_volume_support = True
|
trove_volume_support = True
|
||||||
block_device_mapping = vdb
|
block_device_mapping = vdb
|
||||||
device_path = /dev/vdb
|
device_path = /dev/vdb
|
||||||
mount_point = /var/lib/mysql
|
mount_point = /var/lib/mysql
|
||||||
@ -47,19 +47,19 @@ server_delete_time_out=480
|
|||||||
nova_proxy_admin_user = admin
|
nova_proxy_admin_user = admin
|
||||||
nova_proxy_admin_pass = 3de4922d8b6ac5a1aad9
|
nova_proxy_admin_pass = 3de4922d8b6ac5a1aad9
|
||||||
nova_proxy_admin_tenant_name = admin
|
nova_proxy_admin_tenant_name = admin
|
||||||
reddwarf_auth_url = http://0.0.0.0:5000/v2.0
|
trove_auth_url = http://0.0.0.0:5000/v2.0
|
||||||
|
|
||||||
# Manager impl for the taskmanager
|
# Manager impl for the taskmanager
|
||||||
taskmanager_manager=reddwarf.taskmanager.manager.Manager
|
taskmanager_manager=trove.taskmanager.manager.Manager
|
||||||
|
|
||||||
# Manager sends Exists Notifications
|
# Manager sends Exists Notifications
|
||||||
taskmanager_exists_notification = True
|
taskmanager_exists_notification = True
|
||||||
exists_notification_transformer = reddwarf.extensions.mgmt.instances.models.NovaNotificationTransformer
|
exists_notification_transformer = trove.extensions.mgmt.instances.models.NovaNotificationTransformer
|
||||||
exists_notification_ticks = 30
|
exists_notification_ticks = 30
|
||||||
notification_service_id = 2f3ff068-2bfb-4f70-9a9d-a6bb65bc084b
|
notification_service_id = 2f3ff068-2bfb-4f70-9a9d-a6bb65bc084b
|
||||||
|
|
||||||
# Reddwarf DNS
|
# Trove DNS
|
||||||
reddwarf_dns_support = False
|
trove_dns_support = False
|
||||||
|
|
||||||
# Guest related conf
|
# Guest related conf
|
||||||
agent_heartbeat_time = 10
|
agent_heartbeat_time = 10
|
||||||
@ -80,9 +80,9 @@ notifier_queue_virtual_host = /
|
|||||||
notifier_queue_transport = memory
|
notifier_queue_transport = memory
|
||||||
|
|
||||||
# usage notifications
|
# usage notifications
|
||||||
notification_driver=reddwarf.openstack.common.notifier.rpc_notifier
|
notification_driver=trove.openstack.common.notifier.rpc_notifier
|
||||||
control_exchange=reddwarf
|
control_exchange=trove
|
||||||
|
|
||||||
# ============ Logging information =============================
|
# ============ Logging information =============================
|
||||||
#log_dir = /integration/report
|
#log_dir = /integration/report
|
||||||
#log_file = reddwarf-taskmanager.log
|
#log_file = trove-taskmanager.log
|
@ -12,7 +12,7 @@ bind_host = 0.0.0.0
|
|||||||
bind_port = 8779
|
bind_port = 8779
|
||||||
|
|
||||||
# Number of child processes to run
|
# Number of child processes to run
|
||||||
#reddwarf_api_workers=5
|
#trove_api_workers=5
|
||||||
|
|
||||||
# AMQP Connection info
|
# AMQP Connection info
|
||||||
rabbit_password=f7999d1955c5014aa32c
|
rabbit_password=f7999d1955c5014aa32c
|
||||||
@ -20,9 +20,9 @@ rabbit_password=f7999d1955c5014aa32c
|
|||||||
# SQLAlchemy connection string for the reference implementation
|
# SQLAlchemy connection string for the reference implementation
|
||||||
# registry server. Any valid SQLAlchemy connection string is fine.
|
# registry server. Any valid SQLAlchemy connection string is fine.
|
||||||
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
|
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
|
||||||
# sql_connection = sqlite:///reddwarf_test.sqlite
|
# sql_connection = sqlite:///trove_test.sqlite
|
||||||
sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/reddwarf
|
sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/trove
|
||||||
#sql_connection = postgresql://reddwarf:reddwarf@localhost/reddwarf
|
#sql_connection = postgresql://trove:trove@localhost/trove
|
||||||
|
|
||||||
# Period in seconds after which SQLAlchemy should reestablish its connection
|
# Period in seconds after which SQLAlchemy should reestablish its connection
|
||||||
# to the database.
|
# to the database.
|
||||||
@ -34,13 +34,13 @@ sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/reddwarf
|
|||||||
sql_idle_timeout = 3600
|
sql_idle_timeout = 3600
|
||||||
|
|
||||||
#DB Api Implementation
|
#DB Api Implementation
|
||||||
db_api_implementation = "reddwarf.db.sqlalchemy.api"
|
db_api_implementation = "trove.db.sqlalchemy.api"
|
||||||
|
|
||||||
# Path to the extensions
|
# Path to the extensions
|
||||||
api_extensions_path = reddwarf/extensions
|
api_extensions_path = trove/extensions
|
||||||
|
|
||||||
# Configuration options for talking to nova via the novaclient.
|
# Configuration options for talking to nova via the novaclient.
|
||||||
reddwarf_auth_url = http://0.0.0.0:5000/v2.0
|
trove_auth_url = http://0.0.0.0:5000/v2.0
|
||||||
nova_compute_url = http://localhost:8774/v2
|
nova_compute_url = http://localhost:8774/v2
|
||||||
nova_volume_url = http://localhost:8776/v1
|
nova_volume_url = http://localhost:8776/v1
|
||||||
swift_url = http://localhost:8080/v1/AUTH_
|
swift_url = http://localhost:8080/v1/AUTH_
|
||||||
@ -49,7 +49,7 @@ swift_url = http://localhost:8080/v1/AUTH_
|
|||||||
add_addresses = True
|
add_addresses = True
|
||||||
|
|
||||||
# Config options for enabling volume service
|
# Config options for enabling volume service
|
||||||
reddwarf_volume_support = True
|
trove_volume_support = True
|
||||||
block_device_mapping = vdb
|
block_device_mapping = vdb
|
||||||
device_path = /dev/vdb
|
device_path = /dev/vdb
|
||||||
mount_point = /var/lib/mysql
|
mount_point = /var/lib/mysql
|
||||||
@ -65,8 +65,8 @@ http_post_rate = 200
|
|||||||
http_put_rate = 200
|
http_put_rate = 200
|
||||||
http_delete_rate = 200
|
http_delete_rate = 200
|
||||||
|
|
||||||
# Reddwarf DNS
|
# Trove DNS
|
||||||
reddwarf_dns_support = False
|
trove_dns_support = False
|
||||||
|
|
||||||
# Taskmanager queue name
|
# Taskmanager queue name
|
||||||
taskmanager_queue = taskmanager
|
taskmanager_queue = taskmanager
|
||||||
@ -86,12 +86,12 @@ agent_call_high_timeout = 150
|
|||||||
# Reboot time out for instances
|
# Reboot time out for instances
|
||||||
reboot_time_out = 60
|
reboot_time_out = 60
|
||||||
|
|
||||||
# Reddwarf Security Groups for Instances
|
# Trove Security Groups for Instances
|
||||||
reddwarf_security_groups_support = True
|
trove_security_groups_support = True
|
||||||
reddwarf_security_group_rule_protocol = tcp
|
trove_security_group_rule_protocol = tcp
|
||||||
reddwarf_security_group_rule_port = 3306
|
trove_security_group_rule_port = 3306
|
||||||
|
|
||||||
# Reddwarf api-paste file name
|
# Trove api-paste file name
|
||||||
api_paste_config = api-paste.ini
|
api_paste_config = api-paste.ini
|
||||||
|
|
||||||
|
|
||||||
@ -105,15 +105,15 @@ notifier_queue_port = 5672
|
|||||||
notifier_queue_virtual_host = /
|
notifier_queue_virtual_host = /
|
||||||
notifier_queue_transport = memory
|
notifier_queue_transport = memory
|
||||||
|
|
||||||
control_exchange = reddwarf
|
control_exchange = trove
|
||||||
|
|
||||||
# ============ Logging information =============================
|
# ============ Logging information =============================
|
||||||
#log_dir = /integration/report
|
#log_dir = /integration/report
|
||||||
#log_file = reddwarf-api.log
|
#log_file = trove-api.log
|
||||||
|
|
||||||
|
|
||||||
# ============ SSL configuration (and enablement) =============================
|
# ============ SSL configuration (and enablement) =============================
|
||||||
# In order to enable SSL for the reddwarf api server, uncomment
|
# In order to enable SSL for the trove api server, uncomment
|
||||||
# the cert_file and key_file - and of course have those files
|
# the cert_file and key_file - and of course have those files
|
||||||
# accessible. The existance of those setting and files will
|
# accessible. The existance of those setting and files will
|
||||||
# enable SSL.
|
# enable SSL.
|
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
# Fake out the remote implementations
|
# Fake out the remote implementations
|
||||||
remote_implementation = fake
|
remote_implementation = fake
|
||||||
remote_nova_client = reddwarf.tests.fakes.nova.fake_create_nova_client
|
remote_nova_client = trove.tests.fakes.nova.fake_create_nova_client
|
||||||
remote_nova_volume_client = reddwarf.tests.fakes.nova.fake_create_nova_volume_client
|
remote_nova_volume_client = trove.tests.fakes.nova.fake_create_nova_volume_client
|
||||||
remote_guest_client = reddwarf.tests.fakes.guestagent.fake_create_guest_client
|
remote_guest_client = trove.tests.fakes.guestagent.fake_create_guest_client
|
||||||
remote_swift_client = reddwarf.tests.fakes.swift.fake_create_swift_client
|
remote_swift_client = trove.tests.fakes.swift.fake_create_swift_client
|
||||||
|
|
||||||
fake_mode_events = eventlet
|
fake_mode_events = eventlet
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ bind_host = 0.0.0.0
|
|||||||
bind_port = 8779
|
bind_port = 8779
|
||||||
|
|
||||||
# Number of child processes to run
|
# Number of child processes to run
|
||||||
#reddwarf_api_workers=5
|
#trove_api_workers=5
|
||||||
|
|
||||||
# AMQP Connection info
|
# AMQP Connection info
|
||||||
rabbit_password=f7999d1955c5014aa32c
|
rabbit_password=f7999d1955c5014aa32c
|
||||||
@ -32,9 +32,9 @@ rabbit_password=f7999d1955c5014aa32c
|
|||||||
# SQLAlchemy connection string for the reference implementation
|
# SQLAlchemy connection string for the reference implementation
|
||||||
# registry server. Any valid SQLAlchemy connection string is fine.
|
# registry server. Any valid SQLAlchemy connection string is fine.
|
||||||
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
|
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.html#sqlalchemy.create_engine
|
||||||
sql_connection = sqlite:///reddwarf_test.sqlite
|
sql_connection = sqlite:///trove_test.sqlite
|
||||||
#sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/reddwarf
|
#sql_connection = mysql://root:e1a2c042c828d3566d0a@localhost/trove
|
||||||
#sql_connection = postgresql://reddwarf:reddwarf@localhost/reddwarf
|
#sql_connection = postgresql://trove:trove@localhost/trove
|
||||||
|
|
||||||
# Period in seconds after which SQLAlchemy should reestablish its connection
|
# Period in seconds after which SQLAlchemy should reestablish its connection
|
||||||
# to the database.
|
# to the database.
|
||||||
@ -46,10 +46,10 @@ sql_connection = sqlite:///reddwarf_test.sqlite
|
|||||||
sql_idle_timeout = 3600
|
sql_idle_timeout = 3600
|
||||||
|
|
||||||
#DB Api Implementation
|
#DB Api Implementation
|
||||||
db_api_implementation = reddwarf.db.sqlalchemy.api
|
db_api_implementation = trove.db.sqlalchemy.api
|
||||||
|
|
||||||
# Path to the extensions
|
# Path to the extensions
|
||||||
api_extensions_path = reddwarf/extensions
|
api_extensions_path = trove/extensions
|
||||||
|
|
||||||
# Configuration options for talking to nova via the novaclient.
|
# Configuration options for talking to nova via the novaclient.
|
||||||
# These options are for an admin user in your keystone config.
|
# These options are for an admin user in your keystone config.
|
||||||
@ -58,7 +58,7 @@ api_extensions_path = reddwarf/extensions
|
|||||||
nova_proxy_admin_user = admin
|
nova_proxy_admin_user = admin
|
||||||
nova_proxy_admin_pass = 3de4922d8b6ac5a1aad9
|
nova_proxy_admin_pass = 3de4922d8b6ac5a1aad9
|
||||||
nova_proxy_admin_tenant_name = admin
|
nova_proxy_admin_tenant_name = admin
|
||||||
reddwarf_auth_url = http://0.0.0.0:5000/v2.0
|
trove_auth_url = http://0.0.0.0:5000/v2.0
|
||||||
|
|
||||||
nova_region_name = RegionOne
|
nova_region_name = RegionOne
|
||||||
nova_service_type = compute
|
nova_service_type = compute
|
||||||
@ -68,7 +68,7 @@ nova_service_name = Compute Service
|
|||||||
add_addresses = False
|
add_addresses = False
|
||||||
|
|
||||||
# Config options for enabling volume service
|
# Config options for enabling volume service
|
||||||
reddwarf_volume_support = True
|
trove_volume_support = True
|
||||||
nova_volume_service_type = volume
|
nova_volume_service_type = volume
|
||||||
nova_volume_service_name = Volume Service
|
nova_volume_service_name = Volume Service
|
||||||
device_path = /dev/vdb
|
device_path = /dev/vdb
|
||||||
@ -104,7 +104,7 @@ resize_time_out = 120
|
|||||||
revert_time_out = 120
|
revert_time_out = 120
|
||||||
|
|
||||||
# usage notifications
|
# usage notifications
|
||||||
notification_driver = reddwarf.tests.util.usage
|
notification_driver = trove.tests.util.usage
|
||||||
|
|
||||||
# ============ notifer queue kombu connection options ========================
|
# ============ notifer queue kombu connection options ========================
|
||||||
|
|
||||||
@ -116,27 +116,27 @@ notifier_queue_port = 5672
|
|||||||
notifier_queue_virtual_host = /
|
notifier_queue_virtual_host = /
|
||||||
notifier_queue_transport = memory
|
notifier_queue_transport = memory
|
||||||
|
|
||||||
control_exchange = reddwarf
|
control_exchange = trove
|
||||||
|
|
||||||
paste_config_file=api-paste.ini.test
|
paste_config_file=api-paste.ini.test
|
||||||
|
|
||||||
[composite:reddwarf]
|
[composite:trove]
|
||||||
use = call:reddwarf.common.wsgi:versioned_urlmap
|
use = call:trove.common.wsgi:versioned_urlmap
|
||||||
/: versions
|
/: versions
|
||||||
/v1.0: reddwarfapi
|
/v1.0: troveapi
|
||||||
|
|
||||||
[app:versions]
|
[app:versions]
|
||||||
paste.app_factory = reddwarf.versions:app_factory
|
paste.app_factory = trove.versions:app_factory
|
||||||
|
|
||||||
[pipeline:reddwarfapi]
|
[pipeline:troveapi]
|
||||||
pipeline = faultwrapper tokenauth authorization contextwrapper ratelimit extensions reddwarfapp
|
pipeline = faultwrapper tokenauth authorization contextwrapper ratelimit extensions troveapp
|
||||||
# pipeline = debug reddwarfapp
|
# pipeline = debug troveapp
|
||||||
|
|
||||||
[filter:extensions]
|
[filter:extensions]
|
||||||
paste.filter_factory = reddwarf.common.extensions:factory
|
paste.filter_factory = trove.common.extensions:factory
|
||||||
|
|
||||||
[filter:tokenauth]
|
[filter:tokenauth]
|
||||||
paste.filter_factory = reddwarf.tests.fakes.keystone:filter_factory
|
paste.filter_factory = trove.tests.fakes.keystone:filter_factory
|
||||||
service_protocol = http
|
service_protocol = http
|
||||||
service_host = 127.0.0.1
|
service_host = 127.0.0.1
|
||||||
service_port = 5000
|
service_port = 5000
|
||||||
@ -147,21 +147,21 @@ auth_uri = http://127.0.0.1:5000/
|
|||||||
admin_token = be19c524ddc92109a224
|
admin_token = be19c524ddc92109a224
|
||||||
|
|
||||||
[filter:authorization]
|
[filter:authorization]
|
||||||
paste.filter_factory = reddwarf.common.auth:AuthorizationMiddleware.factory
|
paste.filter_factory = trove.common.auth:AuthorizationMiddleware.factory
|
||||||
|
|
||||||
[filter:contextwrapper]
|
[filter:contextwrapper]
|
||||||
paste.filter_factory = reddwarf.common.wsgi:ContextMiddleware.factory
|
paste.filter_factory = trove.common.wsgi:ContextMiddleware.factory
|
||||||
|
|
||||||
[filter:faultwrapper]
|
[filter:faultwrapper]
|
||||||
paste.filter_factory = reddwarf.common.wsgi:FaultWrapper.factory
|
paste.filter_factory = trove.common.wsgi:FaultWrapper.factory
|
||||||
|
|
||||||
[filter:ratelimit]
|
[filter:ratelimit]
|
||||||
paste.filter_factory = reddwarf.common.limits:RateLimitingMiddleware.factory
|
paste.filter_factory = trove.common.limits:RateLimitingMiddleware.factory
|
||||||
|
|
||||||
[app:reddwarfapp]
|
[app:troveapp]
|
||||||
paste.app_factory = reddwarf.common.api:app_factory
|
paste.app_factory = trove.common.api:app_factory
|
||||||
|
|
||||||
#Add this filter to log request and response for debugging
|
#Add this filter to log request and response for debugging
|
||||||
[filter:debug]
|
[filter:debug]
|
||||||
paste.filter_factory = reddwarf.common.wsgi:Debug
|
paste.filter_factory = trove.common.wsgi:Debug
|
||||||
|
|
@ -3,4 +3,4 @@
|
|||||||
# The list of modules to copy from openstack-common
|
# The list of modules to copy from openstack-common
|
||||||
modules=middleware,notifier,rpc,cfg,context,eventlet_backdoor,exception,excutils,fileutils,gettextutils,importutils,iniparser,jsonutils,local,lockutils,log,loopingcall,network_utils,pastedeploy,periodic_task,policy,processutils,service,testutils,threadgroup,timeutils,utils,uuidutils,wsgi
|
modules=middleware,notifier,rpc,cfg,context,eventlet_backdoor,exception,excutils,fileutils,gettextutils,importutils,iniparser,jsonutils,local,lockutils,log,loopingcall,network_utils,pastedeploy,periodic_task,policy,processutils,service,testutils,threadgroup,timeutils,utils,uuidutils,wsgi
|
||||||
# The base module to hold the copy of openstack.common
|
# The base module to hold the copy of openstack.common
|
||||||
base=reddwarf
|
base=trove
|
||||||
|
@ -1 +0,0 @@
|
|||||||
This is the reddwarf code itself
|
|
@ -19,7 +19,7 @@ We have to duplicate a lot of code from the OpenStack client since so much
|
|||||||
is different here.
|
is different here.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
|
|
||||||
import exceptions
|
import exceptions
|
||||||
|
|
||||||
|
74
run_tests.py
74
run_tests.py
@ -4,9 +4,9 @@ import urllib
|
|||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.tests.config import CONFIG
|
from trove.tests.config import CONFIG
|
||||||
from wsgi_intercept.httplib2_intercept import install as wsgi_install
|
from wsgi_intercept.httplib2_intercept import install as wsgi_install
|
||||||
import proboscis
|
import proboscis
|
||||||
from eventlet import greenthread
|
from eventlet import greenthread
|
||||||
@ -31,24 +31,24 @@ def add_support_for_localization():
|
|||||||
gettext.install('nova', unicode=1)
|
gettext.install('nova', unicode=1)
|
||||||
|
|
||||||
|
|
||||||
def initialize_reddwarf(config_file):
|
def initialize_trove(config_file):
|
||||||
from reddwarf.openstack.common import pastedeploy
|
from trove.openstack.common import pastedeploy
|
||||||
|
|
||||||
cfg.CONF(args=[],
|
cfg.CONF(args=[],
|
||||||
project='reddwarf',
|
project='trove',
|
||||||
default_config_files=[config_file])
|
default_config_files=[config_file])
|
||||||
CONF.use_stderr = False
|
CONF.use_stderr = False
|
||||||
CONF.log_file = 'rdtest.log'
|
CONF.log_file = 'rdtest.log'
|
||||||
logging.setup(None)
|
logging.setup(None)
|
||||||
CONF.bind_port = 8779
|
CONF.bind_port = 8779
|
||||||
CONF.fake_mode_events = 'simulated'
|
CONF.fake_mode_events = 'simulated'
|
||||||
return pastedeploy.paste_deploy_app(config_file, 'reddwarf', {})
|
return pastedeploy.paste_deploy_app(config_file, 'trove', {})
|
||||||
|
|
||||||
|
|
||||||
def initialize_database():
|
def initialize_database():
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
from reddwarf.instance import models
|
from trove.instance import models
|
||||||
from reddwarf.db.sqlalchemy import session
|
from trove.db.sqlalchemy import session
|
||||||
db_api = get_db_api()
|
db_api = get_db_api()
|
||||||
db_api.drop_db(CONF) # Destroys the database, if it exists.
|
db_api.drop_db(CONF) # Destroys the database, if it exists.
|
||||||
db_api.db_sync(CONF)
|
db_api.db_sync(CONF)
|
||||||
@ -83,7 +83,7 @@ def initialize_fakes(app):
|
|||||||
# this queue and call the functions that would normally run in seperate
|
# this queue and call the functions that would normally run in seperate
|
||||||
# threads.
|
# threads.
|
||||||
import eventlet
|
import eventlet
|
||||||
from reddwarf.tests.fakes.common import event_simulator_sleep
|
from trove.tests.fakes.common import event_simulator_sleep
|
||||||
eventlet.sleep = event_simulator_sleep
|
eventlet.sleep = event_simulator_sleep
|
||||||
greenthread.sleep = event_simulator_sleep
|
greenthread.sleep = event_simulator_sleep
|
||||||
import time
|
import time
|
||||||
@ -101,8 +101,8 @@ def parse_args_for_test_config():
|
|||||||
|
|
||||||
|
|
||||||
def replace_poll_until():
|
def replace_poll_until():
|
||||||
from reddwarf.common import utils as rd_utils
|
from trove.common import utils as rd_utils
|
||||||
from reddwarf.tests import util as test_utils
|
from trove.tests import util as test_utils
|
||||||
rd_utils.poll_until = test_utils.poll_until
|
rd_utils.poll_until = test_utils.poll_until
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
@ -110,11 +110,11 @@ if __name__ == "__main__":
|
|||||||
wsgi_install()
|
wsgi_install()
|
||||||
add_support_for_localization()
|
add_support_for_localization()
|
||||||
replace_poll_until()
|
replace_poll_until()
|
||||||
# Load Reddwarf app
|
# Load Trove app
|
||||||
# Paste file needs absolute path
|
# Paste file needs absolute path
|
||||||
config_file = os.path.realpath('etc/reddwarf/reddwarf.conf.test')
|
config_file = os.path.realpath('etc/trove/trove.conf.test')
|
||||||
# 'etc/reddwarf/test-api-paste.ini'
|
# 'etc/trove/test-api-paste.ini'
|
||||||
app = initialize_reddwarf(config_file)
|
app = initialize_trove(config_file)
|
||||||
# Initialize sqlite database.
|
# Initialize sqlite database.
|
||||||
initialize_database()
|
initialize_database()
|
||||||
# Swap out WSGI, httplib, and several sleep functions
|
# Swap out WSGI, httplib, and several sleep functions
|
||||||
@ -124,26 +124,26 @@ if __name__ == "__main__":
|
|||||||
test_config_file = parse_args_for_test_config()
|
test_config_file = parse_args_for_test_config()
|
||||||
CONFIG.load_from_file(test_config_file)
|
CONFIG.load_from_file(test_config_file)
|
||||||
|
|
||||||
from reddwarf.tests.api import backups
|
from trove.tests.api import backups
|
||||||
from reddwarf.tests.api import header
|
from trove.tests.api import header
|
||||||
from reddwarf.tests.api import limits
|
from trove.tests.api import limits
|
||||||
from reddwarf.tests.api import flavors
|
from trove.tests.api import flavors
|
||||||
from reddwarf.tests.api import versions
|
from trove.tests.api import versions
|
||||||
from reddwarf.tests.api import instances
|
from trove.tests.api import instances
|
||||||
from reddwarf.tests.api import instances_actions
|
from trove.tests.api import instances_actions
|
||||||
from reddwarf.tests.api import instances_delete
|
from trove.tests.api import instances_delete
|
||||||
from reddwarf.tests.api import instances_mysql_down
|
from trove.tests.api import instances_mysql_down
|
||||||
from reddwarf.tests.api import instances_resize
|
from trove.tests.api import instances_resize
|
||||||
from reddwarf.tests.api import databases
|
from trove.tests.api import databases
|
||||||
from reddwarf.tests.api import root
|
from trove.tests.api import root
|
||||||
from reddwarf.tests.api import users
|
from trove.tests.api import users
|
||||||
from reddwarf.tests.api import user_access
|
from trove.tests.api import user_access
|
||||||
from reddwarf.tests.api.mgmt import accounts
|
from trove.tests.api.mgmt import accounts
|
||||||
from reddwarf.tests.api.mgmt import admin_required
|
from trove.tests.api.mgmt import admin_required
|
||||||
from reddwarf.tests.api.mgmt import instances
|
from trove.tests.api.mgmt import instances
|
||||||
from reddwarf.tests.api.mgmt import instances_actions
|
from trove.tests.api.mgmt import instances_actions
|
||||||
from reddwarf.tests.api.mgmt import storage
|
from trove.tests.api.mgmt import storage
|
||||||
from reddwarf.tests.api.mgmt import malformed_json
|
from trove.tests.api.mgmt import malformed_json
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Run tests failed: %s" % e)
|
print("Run tests failed: %s" % e)
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
@ -5,7 +5,7 @@ set -eu
|
|||||||
|
|
||||||
function usage {
|
function usage {
|
||||||
echo "Usage: $0 [OPTION]..."
|
echo "Usage: $0 [OPTION]..."
|
||||||
echo "Run Reddwarf's test suite(s)"
|
echo "Run Trove's test suite(s)"
|
||||||
echo ""
|
echo ""
|
||||||
echo " -V, --virtual-env Always use virtualenv. Install automatically if not present"
|
echo " -V, --virtual-env Always use virtualenv. Install automatically if not present"
|
||||||
echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local environment"
|
echo " -N, --no-virtual-env Don't use virtualenv. Run tests in local environment"
|
||||||
@ -60,7 +60,7 @@ done
|
|||||||
|
|
||||||
# If enabled, tell nose to collect coverage data
|
# If enabled, tell nose to collect coverage data
|
||||||
if [ $coverage -eq 1 ]; then
|
if [ $coverage -eq 1 ]; then
|
||||||
noseopts="$noseopts --with-coverage --cover-package=reddwarf"
|
noseopts="$noseopts --with-coverage --cover-package=trove"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
function run_tests {
|
function run_tests {
|
||||||
|
12
setup.cfg
12
setup.cfg
@ -20,13 +20,13 @@ classifier =
|
|||||||
|
|
||||||
[files]
|
[files]
|
||||||
packages =
|
packages =
|
||||||
reddwarf
|
trove
|
||||||
scripts =
|
scripts =
|
||||||
bin/reddwarf-api
|
bin/trove-api
|
||||||
bin/reddwarf-manage
|
bin/trove-manage
|
||||||
bin/reddwarf-mgmt-taskmanager
|
bin/trove-mgmt-taskmanager
|
||||||
bin/reddwarf-server
|
bin/trove-server
|
||||||
bin/reddwarf-taskmanager
|
bin/trove-taskmanager
|
||||||
|
|
||||||
[global]
|
[global]
|
||||||
setup-hooks =
|
setup-hooks =
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Installation script for Reddwarf's development virtualenv
|
Installation script for Trove's development virtualenv
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@ -79,7 +79,7 @@ def check_dependencies():
|
|||||||
print 'Installing virtualenv via easy_install...',
|
print 'Installing virtualenv via easy_install...',
|
||||||
if not (run_command(['which', 'easy_install']) and
|
if not (run_command(['which', 'easy_install']) and
|
||||||
run_command(['easy_install', 'virtualenv'])):
|
run_command(['easy_install', 'virtualenv'])):
|
||||||
die('ERROR: virtualenv not found.\n\Reddwarf development'
|
die('ERROR: virtualenv not found.\n\Trove development'
|
||||||
' requires virtualenv, please install it using your'
|
' requires virtualenv, please install it using your'
|
||||||
' favorite package management tool')
|
' favorite package management tool')
|
||||||
print 'done.'
|
print 'done.'
|
||||||
@ -109,21 +109,21 @@ def install_dependencies(venv=VENV):
|
|||||||
run_command(['tools/with_venv.sh', '-E', venv, 'pip', 'install', '-r',
|
run_command(['tools/with_venv.sh', '-E', venv, 'pip', 'install', '-r',
|
||||||
requires], redirect_output=False)
|
requires], redirect_output=False)
|
||||||
|
|
||||||
# Tell the virtual env how to "import reddwarf"
|
# Tell the virtual env how to "import trove"
|
||||||
pthfile = os.path.join(venv, "lib", PY_VERSION, "site-packages",
|
pthfile = os.path.join(venv, "lib", PY_VERSION, "site-packages",
|
||||||
"reddwarf.pth")
|
"trove.pth")
|
||||||
f = open(pthfile, 'w')
|
f = open(pthfile, 'w')
|
||||||
f.write("%s\n" % ROOT)
|
f.write("%s\n" % ROOT)
|
||||||
|
|
||||||
|
|
||||||
def print_help():
|
def print_help():
|
||||||
help = """
|
help = """
|
||||||
Reddwarf development environment setup is complete.
|
Trove development environment setup is complete.
|
||||||
|
|
||||||
Reddwarf development uses virtualenv to track and manage Python
|
Trove development uses virtualenv to track and manage Python
|
||||||
dependencies while in development and testing.
|
dependencies while in development and testing.
|
||||||
|
|
||||||
To activate the Reddwarf virtualenv for the extent of your current shell
|
To activate the Trove virtualenv for the extent of your current shell
|
||||||
session you can run:
|
session you can run:
|
||||||
|
|
||||||
$ source .venv/bin/activate
|
$ source .venv/bin/activate
|
||||||
|
1
trove/README
Normal file
1
trove/README
Normal file
@ -0,0 +1 @@
|
|||||||
|
This is the trove code itself
|
@ -15,10 +15,10 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
"""
|
"""
|
||||||
:mod:`reddwarf` -- Cloud PaaS Database Platform
|
:mod:`trove` -- Cloud PaaS Database Platform
|
||||||
===================================
|
===================================
|
||||||
|
|
||||||
.. automodule:: reddwarf
|
.. automodule:: trove
|
||||||
:platform: Unix
|
:platform: Unix
|
||||||
:synopsis: Platform-As-A-Service Database Cloud
|
:synopsis: Platform-As-A-Service Database Cloud
|
||||||
.. moduleauthor:: Michael Basnight <mbasnight@gmail.com>
|
.. moduleauthor:: Michael Basnight <mbasnight@gmail.com>
|
@ -14,15 +14,15 @@
|
|||||||
|
|
||||||
"""Model classes that form the core of snapshots functionality."""
|
"""Model classes that form the core of snapshots functionality."""
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.db.models import DatabaseModelBase
|
from trove.db.models import DatabaseModelBase
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from swiftclient.client import ClientException
|
from swiftclient.client import ClientException
|
||||||
from reddwarf.taskmanager import api
|
from trove.taskmanager import api
|
||||||
from reddwarf.common.remote import create_swift_client
|
from trove.common.remote import create_swift_client
|
||||||
from reddwarf.common import utils
|
from trove.common import utils
|
||||||
from reddwarf.quota.quota import run_with_quotas
|
from trove.quota.quota import run_with_quotas
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@ -58,7 +58,7 @@ class Backup(object):
|
|||||||
instance_id = utils.get_id_from_href(instance)
|
instance_id = utils.get_id_from_href(instance)
|
||||||
|
|
||||||
# verify that the instance exist and can perform actions
|
# verify that the instance exist and can perform actions
|
||||||
from reddwarf.instance.models import Instance
|
from trove.instance.models import Instance
|
||||||
instance_model = Instance.load(context, instance_id)
|
instance_model = Instance.load(context, instance_id)
|
||||||
instance_model.validate_can_perform_action()
|
instance_model.validate_can_perform_action()
|
||||||
|
|
@ -15,13 +15,13 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from reddwarf.common import wsgi
|
from trove.common import wsgi
|
||||||
from reddwarf.backup import views
|
from trove.backup import views
|
||||||
from reddwarf.backup.models import Backup
|
from trove.backup.models import Backup
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@ -73,5 +73,5 @@ class BackupController(wsgi.Controller):
|
|||||||
except KeyError as e:
|
except KeyError as e:
|
||||||
LOG.error(_("Create Backup Required field(s) "
|
LOG.error(_("Create Backup Required field(s) "
|
||||||
"- %s") % e)
|
"- %s") % e)
|
||||||
raise exception.ReddwarfError(
|
raise exception.TroveError(
|
||||||
"Required element/key - %s was not specified" % e)
|
"Required element/key - %s was not specified" % e)
|
@ -14,12 +14,12 @@
|
|||||||
|
|
||||||
import routes
|
import routes
|
||||||
|
|
||||||
from reddwarf.common import wsgi
|
from trove.common import wsgi
|
||||||
from reddwarf.flavor.service import FlavorController
|
from trove.flavor.service import FlavorController
|
||||||
from reddwarf.instance.service import InstanceController
|
from trove.instance.service import InstanceController
|
||||||
from reddwarf.limits.service import LimitsController
|
from trove.limits.service import LimitsController
|
||||||
from reddwarf.backup.service import BackupController
|
from trove.backup.service import BackupController
|
||||||
from reddwarf.versions import VersionsController
|
from trove.versions import VersionsController
|
||||||
|
|
||||||
|
|
||||||
class API(wsgi.Router):
|
class API(wsgi.Router):
|
@ -20,9 +20,9 @@ import re
|
|||||||
import webob.exc
|
import webob.exc
|
||||||
import wsgi
|
import wsgi
|
||||||
|
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ class AuthorizationMiddleware(wsgi.Middleware):
|
|||||||
class TenantBasedAuth(object):
|
class TenantBasedAuth(object):
|
||||||
|
|
||||||
# The paths differ from melange, so the regex must differ as well,
|
# The paths differ from melange, so the regex must differ as well,
|
||||||
# reddwarf starts with a tenant_id
|
# trove starts with a tenant_id
|
||||||
tenant_scoped_url = re.compile("/(?P<tenant_id>.*?)/.*")
|
tenant_scoped_url = re.compile("/(?P<tenant_id>.*?)/.*")
|
||||||
|
|
||||||
def authorize(self, request, tenant_id, roles):
|
def authorize(self, request, tenant_id, roles):
|
||||||
@ -73,15 +73,15 @@ class TenantBasedAuth(object):
|
|||||||
def admin_context(f):
|
def admin_context(f):
|
||||||
"""
|
"""
|
||||||
Verify that the current context has administrative access,
|
Verify that the current context has administrative access,
|
||||||
or throw an exception. Reddwarf API functions typically take the form
|
or throw an exception. Trove API functions typically take the form
|
||||||
function(self, req), or function(self, req, id).
|
function(self, req), or function(self, req, id).
|
||||||
"""
|
"""
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
try:
|
try:
|
||||||
req = args[1]
|
req = args[1]
|
||||||
context = req.environ.get('reddwarf.context')
|
context = req.environ.get('trove.context')
|
||||||
except:
|
except:
|
||||||
raise exception.ReddwarfError("Cannot load request context.")
|
raise exception.TroveError("Cannot load request context.")
|
||||||
if not context.is_admin:
|
if not context.is_admin:
|
||||||
raise exception.Forbidden("User does not have admin privileges.")
|
raise exception.Forbidden("User does not have admin privileges.")
|
||||||
return f(*args, **kwargs)
|
return f(*args, **kwargs)
|
@ -14,13 +14,13 @@
|
|||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
"""Routines for configuring Reddwarf."""
|
"""Routines for configuring Trove."""
|
||||||
|
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
|
|
||||||
common_opts = [
|
common_opts = [
|
||||||
cfg.StrOpt('sql_connection',
|
cfg.StrOpt('sql_connection',
|
||||||
default='sqlite:///reddwarf_test.sqlite',
|
default='sqlite:///trove_test.sqlite',
|
||||||
help='SQL Connection'),
|
help='SQL Connection'),
|
||||||
cfg.IntOpt('sql_idle_timeout', default=3600),
|
cfg.IntOpt('sql_idle_timeout', default=3600),
|
||||||
cfg.BoolOpt('sql_query_log', default=False),
|
cfg.BoolOpt('sql_query_log', default=False),
|
||||||
@ -29,13 +29,13 @@ common_opts = [
|
|||||||
help='Path to extensions'),
|
help='Path to extensions'),
|
||||||
cfg.StrOpt('api_paste_config',
|
cfg.StrOpt('api_paste_config',
|
||||||
default="api-paste.ini",
|
default="api-paste.ini",
|
||||||
help='File name for the paste.deploy config for reddwarf-api'),
|
help='File name for the paste.deploy config for trove-api'),
|
||||||
cfg.BoolOpt('add_addresses',
|
cfg.BoolOpt('add_addresses',
|
||||||
default=False,
|
default=False,
|
||||||
help='Whether to add IP addresses to the list operations'),
|
help='Whether to add IP addresses to the list operations'),
|
||||||
cfg.BoolOpt('reddwarf_volume_support',
|
cfg.BoolOpt('trove_volume_support',
|
||||||
default=True,
|
default=True,
|
||||||
help='File name for the paste.deploy config for reddwarf-api'),
|
help='File name for the paste.deploy config for trove-api'),
|
||||||
cfg.ListOpt('admin_roles', default=[]),
|
cfg.ListOpt('admin_roles', default=[]),
|
||||||
cfg.StrOpt('remote_implementation',
|
cfg.StrOpt('remote_implementation',
|
||||||
default="real",
|
default="real",
|
||||||
@ -43,18 +43,18 @@ common_opts = [
|
|||||||
cfg.StrOpt('nova_compute_url', default='http://localhost:8774/v2'),
|
cfg.StrOpt('nova_compute_url', default='http://localhost:8774/v2'),
|
||||||
cfg.StrOpt('nova_volume_url', default='http://localhost:8776/v2'),
|
cfg.StrOpt('nova_volume_url', default='http://localhost:8776/v2'),
|
||||||
cfg.StrOpt('swift_url', default='http://localhost:8080/v1/AUTH_'),
|
cfg.StrOpt('swift_url', default='http://localhost:8080/v1/AUTH_'),
|
||||||
cfg.StrOpt('reddwarf_auth_url', default='http://0.0.0.0:5000/v2.0'),
|
cfg.StrOpt('trove_auth_url', default='http://0.0.0.0:5000/v2.0'),
|
||||||
cfg.StrOpt('host', default='0.0.0.0'),
|
cfg.StrOpt('host', default='0.0.0.0'),
|
||||||
cfg.IntOpt('report_interval', default=10,
|
cfg.IntOpt('report_interval', default=10,
|
||||||
help='The interval in seconds which periodic tasks are run'),
|
help='The interval in seconds which periodic tasks are run'),
|
||||||
cfg.IntOpt('periodic_interval', default=60),
|
cfg.IntOpt('periodic_interval', default=60),
|
||||||
cfg.BoolOpt('reddwarf_dns_support', default=False),
|
cfg.BoolOpt('trove_dns_support', default=False),
|
||||||
cfg.StrOpt('db_api_implementation', default='reddwarf.db.sqlalchemy.api'),
|
cfg.StrOpt('db_api_implementation', default='trove.db.sqlalchemy.api'),
|
||||||
cfg.StrOpt('mysql_pkg', default='mysql-server-5.5'),
|
cfg.StrOpt('mysql_pkg', default='mysql-server-5.5'),
|
||||||
cfg.StrOpt('percona_pkg', default='percona-server-server-5.5'),
|
cfg.StrOpt('percona_pkg', default='percona-server-server-5.5'),
|
||||||
cfg.StrOpt('dns_driver', default='reddwarf.dns.driver.DnsDriver'),
|
cfg.StrOpt('dns_driver', default='trove.dns.driver.DnsDriver'),
|
||||||
cfg.StrOpt('dns_instance_entry_factory',
|
cfg.StrOpt('dns_instance_entry_factory',
|
||||||
default='reddwarf.dns.driver.DnsInstanceEntryFactory'),
|
default='trove.dns.driver.DnsInstanceEntryFactory'),
|
||||||
cfg.StrOpt('dns_hostname', default=""),
|
cfg.StrOpt('dns_hostname', default=""),
|
||||||
cfg.IntOpt('dns_account_id', default=0),
|
cfg.IntOpt('dns_account_id', default=0),
|
||||||
cfg.StrOpt('dns_auth_url', default=""),
|
cfg.StrOpt('dns_auth_url', default=""),
|
||||||
@ -88,7 +88,7 @@ common_opts = [
|
|||||||
cfg.IntOpt('max_backups_per_user', default=5,
|
cfg.IntOpt('max_backups_per_user', default=5,
|
||||||
help='default maximum number of backups created by a tenant'),
|
help='default maximum number of backups created by a tenant'),
|
||||||
cfg.StrOpt('quota_driver',
|
cfg.StrOpt('quota_driver',
|
||||||
default='reddwarf.quota.quota.DbQuotaDriver',
|
default='trove.quota.quota.DbQuotaDriver',
|
||||||
help='default driver to use for quota checks'),
|
help='default driver to use for quota checks'),
|
||||||
cfg.StrOpt('taskmanager_queue', default='taskmanager'),
|
cfg.StrOpt('taskmanager_queue', default='taskmanager'),
|
||||||
cfg.BoolOpt('use_nova_server_volume', default=False),
|
cfg.BoolOpt('use_nova_server_volume', default=False),
|
||||||
@ -112,10 +112,10 @@ common_opts = [
|
|||||||
cfg.IntOpt('http_put_rate', default=200),
|
cfg.IntOpt('http_put_rate', default=200),
|
||||||
cfg.BoolOpt('hostname_require_ipv4', default=True,
|
cfg.BoolOpt('hostname_require_ipv4', default=True,
|
||||||
help="Require user hostnames to be IPv4 addresses."),
|
help="Require user hostnames to be IPv4 addresses."),
|
||||||
cfg.BoolOpt('reddwarf_security_groups_support', default=True),
|
cfg.BoolOpt('trove_security_groups_support', default=True),
|
||||||
cfg.StrOpt('reddwarf_security_group_rule_protocol', default='tcp'),
|
cfg.StrOpt('trove_security_group_rule_protocol', default='tcp'),
|
||||||
cfg.IntOpt('reddwarf_security_group_rule_port', default=3306),
|
cfg.IntOpt('trove_security_group_rule_port', default=3306),
|
||||||
cfg.IntOpt('reddwarf_api_workers', default=None),
|
cfg.IntOpt('trove_api_workers', default=None),
|
||||||
cfg.IntOpt('usage_sleep_time', default=1,
|
cfg.IntOpt('usage_sleep_time', default=1,
|
||||||
help='Time to sleep during the check active guest'),
|
help='Time to sleep during the check active guest'),
|
||||||
cfg.IntOpt('usage_timeout', default=300,
|
cfg.IntOpt('usage_timeout', default=300,
|
||||||
@ -123,19 +123,19 @@ common_opts = [
|
|||||||
cfg.StrOpt('region', default='LOCAL_DEV',
|
cfg.StrOpt('region', default='LOCAL_DEV',
|
||||||
help='The region this service is located.'),
|
help='The region this service is located.'),
|
||||||
cfg.StrOpt('backup_runner',
|
cfg.StrOpt('backup_runner',
|
||||||
default='reddwarf.guestagent.backup.backup_types.InnoBackupEx'),
|
default='trove.guestagent.backup.backup_types.InnoBackupEx'),
|
||||||
cfg.StrOpt('backup_strategy', default='InnoBackupEx',
|
cfg.StrOpt('backup_strategy', default='InnoBackupEx',
|
||||||
help='Default strategy to perform backups'),
|
help='Default strategy to perform backups'),
|
||||||
cfg.StrOpt('backup_namespace',
|
cfg.StrOpt('backup_namespace',
|
||||||
default='reddwarf.guestagent.strategies.backup.impl',
|
default='trove.guestagent.strategies.backup.impl',
|
||||||
help='Namespace to load backup strategies from'),
|
help='Namespace to load backup strategies from'),
|
||||||
cfg.StrOpt('restore_namespace',
|
cfg.StrOpt('restore_namespace',
|
||||||
default='reddwarf.guestagent.strategies.restore.impl',
|
default='trove.guestagent.strategies.restore.impl',
|
||||||
help='Namespace to load restore strategies from'),
|
help='Namespace to load restore strategies from'),
|
||||||
cfg.StrOpt('storage_strategy', default='SwiftStorage',
|
cfg.StrOpt('storage_strategy', default='SwiftStorage',
|
||||||
help="Default strategy to store backups"),
|
help="Default strategy to store backups"),
|
||||||
cfg.StrOpt('storage_namespace',
|
cfg.StrOpt('storage_namespace',
|
||||||
default='reddwarf.guestagent.strategies.storage.swift',
|
default='trove.guestagent.strategies.storage.swift',
|
||||||
help='Namespace to load the default storage strategy from'),
|
help='Namespace to load the default storage strategy from'),
|
||||||
cfg.StrOpt('backup_swift_container', default='database_backups'),
|
cfg.StrOpt('backup_swift_container', default='database_backups'),
|
||||||
cfg.BoolOpt('backup_use_gzip_compression', default=True,
|
cfg.BoolOpt('backup_use_gzip_compression', default=True,
|
||||||
@ -151,15 +151,15 @@ common_opts = [
|
|||||||
cfg.IntOpt('backup_segment_max_size', default=2 * (1024 ** 3),
|
cfg.IntOpt('backup_segment_max_size', default=2 * (1024 ** 3),
|
||||||
help="Maximum size of each segment of the backup file."),
|
help="Maximum size of each segment of the backup file."),
|
||||||
cfg.StrOpt('remote_dns_client',
|
cfg.StrOpt('remote_dns_client',
|
||||||
default='reddwarf.common.remote.dns_client'),
|
default='trove.common.remote.dns_client'),
|
||||||
cfg.StrOpt('remote_guest_client',
|
cfg.StrOpt('remote_guest_client',
|
||||||
default='reddwarf.common.remote.guest_client'),
|
default='trove.common.remote.guest_client'),
|
||||||
cfg.StrOpt('remote_nova_client',
|
cfg.StrOpt('remote_nova_client',
|
||||||
default='reddwarf.common.remote.nova_client'),
|
default='trove.common.remote.nova_client'),
|
||||||
cfg.StrOpt('remote_nova_volume_client',
|
cfg.StrOpt('remote_nova_volume_client',
|
||||||
default='reddwarf.common.remote.nova_volume_client'),
|
default='trove.common.remote.nova_volume_client'),
|
||||||
cfg.StrOpt('remote_swift_client',
|
cfg.StrOpt('remote_swift_client',
|
||||||
default='reddwarf.common.remote.swift_client'),
|
default='trove.common.remote.swift_client'),
|
||||||
cfg.BoolOpt('taskmanager_exists_notification', default=False,
|
cfg.BoolOpt('taskmanager_exists_notification', default=False,
|
||||||
help='Toggles Task Manager to send out exists notifications'),
|
help='Toggles Task Manager to send out exists notifications'),
|
||||||
cfg.StrOpt('exists_notification_transformer', default=None,
|
cfg.StrOpt('exists_notification_transformer', default=None,
|
||||||
@ -188,5 +188,5 @@ def custom_parser(parsername, parser):
|
|||||||
|
|
||||||
def parse_args(argv, default_config_files=None):
|
def parse_args(argv, default_config_files=None):
|
||||||
cfg.CONF(args=argv[1:],
|
cfg.CONF(args=argv[1:],
|
||||||
project='reddwarf',
|
project='trove',
|
||||||
default_config_files=default_config_files)
|
default_config_files=default_config_files)
|
@ -22,12 +22,12 @@ Projects should subclass this class if they wish to enhance the request
|
|||||||
context or provide additional information in their specific WSGI pipeline.
|
context or provide additional information in their specific WSGI pipeline.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from reddwarf.openstack.common import context
|
from trove.openstack.common import context
|
||||||
from reddwarf.openstack.common import local
|
from trove.openstack.common import local
|
||||||
from reddwarf.common import utils
|
from trove.common import utils
|
||||||
|
|
||||||
|
|
||||||
class ReddwarfContext(context.RequestContext):
|
class TroveContext(context.RequestContext):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Stores information about the security context under which the user
|
Stores information about the security context under which the user
|
||||||
@ -41,13 +41,13 @@ class ReddwarfContext(context.RequestContext):
|
|||||||
self.marker = kwargs.get('marker')
|
self.marker = kwargs.get('marker')
|
||||||
if 'marker' in kwargs:
|
if 'marker' in kwargs:
|
||||||
del kwargs['marker']
|
del kwargs['marker']
|
||||||
super(ReddwarfContext, self).__init__(**kwargs)
|
super(TroveContext, self).__init__(**kwargs)
|
||||||
|
|
||||||
if not hasattr(local.store, 'context'):
|
if not hasattr(local.store, 'context'):
|
||||||
self.update_store()
|
self.update_store()
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
parent_dict = super(ReddwarfContext, self).to_dict()
|
parent_dict = super(TroveContext, self).to_dict()
|
||||||
parent_dict.update({'limit': self.limit,
|
parent_dict.update({'limit': self.limit,
|
||||||
'marker': self.marker
|
'marker': self.marker
|
||||||
})
|
})
|
@ -16,10 +16,10 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
"""I totally stole most of this from melange, thx guys!!!"""
|
"""I totally stole most of this from melange, thx guys!!!"""
|
||||||
|
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common import exception as openstack_exception
|
from trove.openstack.common import exception as openstack_exception
|
||||||
from reddwarf.openstack.common import processutils
|
from trove.openstack.common import processutils
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
|
|
||||||
from webob import exc
|
from webob import exc
|
||||||
|
|
||||||
@ -30,8 +30,8 @@ LOG = logging.getLogger(__name__)
|
|||||||
wrap_exception = openstack_exception.wrap_exception
|
wrap_exception = openstack_exception.wrap_exception
|
||||||
|
|
||||||
|
|
||||||
class ReddwarfError(openstack_exception.OpenstackException):
|
class TroveError(openstack_exception.OpenstackException):
|
||||||
"""Base exception that all custom reddwarf app exceptions inherit from."""
|
"""Base exception that all custom trove app exceptions inherit from."""
|
||||||
internal_message = None
|
internal_message = None
|
||||||
|
|
||||||
def __init__(self, message=None, **kwargs):
|
def __init__(self, message=None, **kwargs):
|
||||||
@ -42,25 +42,25 @@ class ReddwarfError(openstack_exception.OpenstackException):
|
|||||||
LOG.error(self.internal_message % kwargs)
|
LOG.error(self.internal_message % kwargs)
|
||||||
except Exception:
|
except Exception:
|
||||||
LOG.error(self.internal_message)
|
LOG.error(self.internal_message)
|
||||||
super(ReddwarfError, self).__init__(**kwargs)
|
super(TroveError, self).__init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
class DBConstraintError(ReddwarfError):
|
class DBConstraintError(TroveError):
|
||||||
|
|
||||||
message = _("Failed to save %(model_name)s because: %(error)s")
|
message = _("Failed to save %(model_name)s because: %(error)s")
|
||||||
|
|
||||||
|
|
||||||
class InvalidRPCConnectionReuse(ReddwarfError):
|
class InvalidRPCConnectionReuse(TroveError):
|
||||||
|
|
||||||
message = _("Invalid RPC Connection Reuse")
|
message = _("Invalid RPC Connection Reuse")
|
||||||
|
|
||||||
|
|
||||||
class NotFound(ReddwarfError):
|
class NotFound(TroveError):
|
||||||
|
|
||||||
message = _("Resource %(uuid)s cannot be found")
|
message = _("Resource %(uuid)s cannot be found")
|
||||||
|
|
||||||
|
|
||||||
class FlavorNotFound(ReddwarfError):
|
class FlavorNotFound(TroveError):
|
||||||
|
|
||||||
message = _("Resource %(uuid)s cannot be found")
|
message = _("Resource %(uuid)s cannot be found")
|
||||||
|
|
||||||
@ -88,13 +88,13 @@ class DnsRecordNotFound(NotFound):
|
|||||||
message = _("DnsRecord with name= %(name)s not found.")
|
message = _("DnsRecord with name= %(name)s not found.")
|
||||||
|
|
||||||
|
|
||||||
class OverLimit(ReddwarfError):
|
class OverLimit(TroveError):
|
||||||
|
|
||||||
internal_message = _("The server rejected the request due to its size or "
|
internal_message = _("The server rejected the request due to its size or "
|
||||||
"rate.")
|
"rate.")
|
||||||
|
|
||||||
|
|
||||||
class QuotaExceeded(ReddwarfError):
|
class QuotaExceeded(TroveError):
|
||||||
|
|
||||||
message = _("Quota exceeded for resources: %(overs)s")
|
message = _("Quota exceeded for resources: %(overs)s")
|
||||||
|
|
||||||
@ -104,18 +104,18 @@ class VolumeQuotaExceeded(QuotaExceeded):
|
|||||||
message = _("Instance volume quota exceeded.")
|
message = _("Instance volume quota exceeded.")
|
||||||
|
|
||||||
|
|
||||||
class GuestError(ReddwarfError):
|
class GuestError(TroveError):
|
||||||
|
|
||||||
message = _("An error occurred communicating with the guest: "
|
message = _("An error occurred communicating with the guest: "
|
||||||
"%(original_message)s.")
|
"%(original_message)s.")
|
||||||
|
|
||||||
|
|
||||||
class GuestTimeout(ReddwarfError):
|
class GuestTimeout(TroveError):
|
||||||
|
|
||||||
message = _("Timeout trying to connect to the Guest Agent.")
|
message = _("Timeout trying to connect to the Guest Agent.")
|
||||||
|
|
||||||
|
|
||||||
class BadRequest(ReddwarfError):
|
class BadRequest(TroveError):
|
||||||
|
|
||||||
message = _("The server could not comply with the request since it is "
|
message = _("The server could not comply with the request since it is "
|
||||||
"either malformed or otherwise incorrect.")
|
"either malformed or otherwise incorrect.")
|
||||||
@ -136,12 +136,12 @@ class UserAlreadyExists(BadRequest):
|
|||||||
message = _('A user with the name "%(name)s" already exists.')
|
message = _('A user with the name "%(name)s" already exists.')
|
||||||
|
|
||||||
|
|
||||||
class UnprocessableEntity(ReddwarfError):
|
class UnprocessableEntity(TroveError):
|
||||||
|
|
||||||
message = _("Unable to process the contained request")
|
message = _("Unable to process the contained request")
|
||||||
|
|
||||||
|
|
||||||
class CannotResizeToSameSize(ReddwarfError):
|
class CannotResizeToSameSize(TroveError):
|
||||||
|
|
||||||
message = _("When resizing, instances must change size!")
|
message = _("When resizing, instances must change size!")
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ class VolumeAttachmentsNotFound(NotFound):
|
|||||||
"instance %(server_id)")
|
"instance %(server_id)")
|
||||||
|
|
||||||
|
|
||||||
class VolumeCreationFailure(ReddwarfError):
|
class VolumeCreationFailure(TroveError):
|
||||||
|
|
||||||
message = _("Failed to create a volume in Nova.")
|
message = _("Failed to create a volume in Nova.")
|
||||||
|
|
||||||
@ -167,38 +167,38 @@ class LocalStorageNotSpecified(BadRequest):
|
|||||||
message = _("Local storage not specified in flavor ID: %(flavor)s.")
|
message = _("Local storage not specified in flavor ID: %(flavor)s.")
|
||||||
|
|
||||||
|
|
||||||
class LocalStorageNotSupported(ReddwarfError):
|
class LocalStorageNotSupported(TroveError):
|
||||||
|
|
||||||
message = _("Local storage support is not enabled.")
|
message = _("Local storage support is not enabled.")
|
||||||
|
|
||||||
|
|
||||||
class VolumeNotSupported(ReddwarfError):
|
class VolumeNotSupported(TroveError):
|
||||||
|
|
||||||
message = _("Volume support is not enabled.")
|
message = _("Volume support is not enabled.")
|
||||||
|
|
||||||
|
|
||||||
class TaskManagerError(ReddwarfError):
|
class TaskManagerError(TroveError):
|
||||||
|
|
||||||
message = _("An error occurred communicating with the task manager: "
|
message = _("An error occurred communicating with the task manager: "
|
||||||
"%(original_message)s.")
|
"%(original_message)s.")
|
||||||
|
|
||||||
|
|
||||||
class BadValue(ReddwarfError):
|
class BadValue(TroveError):
|
||||||
|
|
||||||
message = _("Value could not be converted: %(msg)s")
|
message = _("Value could not be converted: %(msg)s")
|
||||||
|
|
||||||
|
|
||||||
class PollTimeOut(ReddwarfError):
|
class PollTimeOut(TroveError):
|
||||||
|
|
||||||
message = _("Polling request timed out.")
|
message = _("Polling request timed out.")
|
||||||
|
|
||||||
|
|
||||||
class Forbidden(ReddwarfError):
|
class Forbidden(TroveError):
|
||||||
|
|
||||||
message = _("User does not have admin privileges.")
|
message = _("User does not have admin privileges.")
|
||||||
|
|
||||||
|
|
||||||
class InvalidModelError(ReddwarfError):
|
class InvalidModelError(TroveError):
|
||||||
|
|
||||||
message = _("The following values are invalid: %(errors)s")
|
message = _("The following values are invalid: %(errors)s")
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ class ModelNotFoundError(NotFound):
|
|||||||
message = _("Not Found")
|
message = _("Not Found")
|
||||||
|
|
||||||
|
|
||||||
class UpdateGuestError(ReddwarfError):
|
class UpdateGuestError(TroveError):
|
||||||
|
|
||||||
message = _("Failed to update instances")
|
message = _("Failed to update instances")
|
||||||
|
|
||||||
@ -235,43 +235,43 @@ class QuotaResourceUnknown(QuotaNotFound):
|
|||||||
message = _("Unknown quota resources %(unknown)s.")
|
message = _("Unknown quota resources %(unknown)s.")
|
||||||
|
|
||||||
|
|
||||||
class BackupUploadError(ReddwarfError):
|
class BackupUploadError(TroveError):
|
||||||
message = _("Unable to upload Backup onto swift")
|
message = _("Unable to upload Backup onto swift")
|
||||||
|
|
||||||
|
|
||||||
class BackupDownloadError(ReddwarfError):
|
class BackupDownloadError(TroveError):
|
||||||
message = _("Unable to download Backup from swift")
|
message = _("Unable to download Backup from swift")
|
||||||
|
|
||||||
|
|
||||||
class BackupCreationError(ReddwarfError):
|
class BackupCreationError(TroveError):
|
||||||
message = _("Unable to create Backup")
|
message = _("Unable to create Backup")
|
||||||
|
|
||||||
|
|
||||||
class BackupUpdateError(ReddwarfError):
|
class BackupUpdateError(TroveError):
|
||||||
message = _("Unable to update Backup table in db")
|
message = _("Unable to update Backup table in db")
|
||||||
|
|
||||||
|
|
||||||
class SecurityGroupCreationError(ReddwarfError):
|
class SecurityGroupCreationError(TroveError):
|
||||||
|
|
||||||
message = _("Failed to create Security Group.")
|
message = _("Failed to create Security Group.")
|
||||||
|
|
||||||
|
|
||||||
class SecurityGroupDeletionError(ReddwarfError):
|
class SecurityGroupDeletionError(TroveError):
|
||||||
|
|
||||||
message = _("Failed to delete Security Group.")
|
message = _("Failed to delete Security Group.")
|
||||||
|
|
||||||
|
|
||||||
class SecurityGroupRuleCreationError(ReddwarfError):
|
class SecurityGroupRuleCreationError(TroveError):
|
||||||
|
|
||||||
message = _("Failed to create Security Group Rule.")
|
message = _("Failed to create Security Group Rule.")
|
||||||
|
|
||||||
|
|
||||||
class SecurityGroupRuleDeletionError(ReddwarfError):
|
class SecurityGroupRuleDeletionError(TroveError):
|
||||||
|
|
||||||
message = _("Failed to delete Security Group Rule.")
|
message = _("Failed to delete Security Group Rule.")
|
||||||
|
|
||||||
|
|
||||||
class BackupNotCompleteError(ReddwarfError):
|
class BackupNotCompleteError(TroveError):
|
||||||
|
|
||||||
message = _("Unable to create instance because backup %(backup_id)s is "
|
message = _("Unable to create instance because backup %(backup_id)s is "
|
||||||
"not completed")
|
"not completed")
|
||||||
@ -282,6 +282,6 @@ class BackupFileNotFound(NotFound):
|
|||||||
"storage.")
|
"storage.")
|
||||||
|
|
||||||
|
|
||||||
class SwiftAuthError(ReddwarfError):
|
class SwiftAuthError(TroveError):
|
||||||
|
|
||||||
message = _("Swift account not accessible for tenant %(tenant_id)s.")
|
message = _("Swift account not accessible for tenant %(tenant_id)s.")
|
@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
import routes
|
import routes
|
||||||
import webob.dec
|
import webob.dec
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
|
|
||||||
from reddwarf.openstack.common import extensions
|
from trove.openstack.common import extensions
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import wsgi
|
from trove.common import wsgi
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ ResourceExtension = extensions.ResourceExtension
|
|||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
|
|
||||||
class ReddwarfExtensionMiddleware(extensions.ExtensionMiddleware):
|
class TroveExtensionMiddleware(extensions.ExtensionMiddleware):
|
||||||
|
|
||||||
def __init__(self, application, ext_mgr=None):
|
def __init__(self, application, ext_mgr=None):
|
||||||
ext_mgr = (ext_mgr or
|
ext_mgr = (ext_mgr or
|
||||||
@ -87,7 +87,7 @@ class ReddwarfExtensionMiddleware(extensions.ExtensionMiddleware):
|
|||||||
def factory(global_config, **local_config):
|
def factory(global_config, **local_config):
|
||||||
"""Paste factory."""
|
"""Paste factory."""
|
||||||
def _factory(app):
|
def _factory(app):
|
||||||
extensions.DEFAULT_XMLNS = "http://docs.openstack.org/reddwarf"
|
extensions.DEFAULT_XMLNS = "http://docs.openstack.org/trove"
|
||||||
ext_mgr = extensions.ExtensionManager(CONF.api_extensions_path)
|
ext_mgr = extensions.ExtensionManager(CONF.api_extensions_path)
|
||||||
return ReddwarfExtensionMiddleware(app, ext_mgr)
|
return TroveExtensionMiddleware(app, ext_mgr)
|
||||||
return _factory
|
return _factory
|
@ -26,12 +26,12 @@ import time
|
|||||||
import webob.dec
|
import webob.dec
|
||||||
import webob.exc
|
import webob.exc
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import wsgi as base_wsgi
|
from trove.common import wsgi as base_wsgi
|
||||||
from reddwarf.openstack.common import importutils
|
from trove.openstack.common import importutils
|
||||||
from reddwarf.openstack.common import jsonutils
|
from trove.openstack.common import jsonutils
|
||||||
from reddwarf.openstack.common import wsgi
|
from trove.openstack.common import wsgi
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
@ -155,7 +155,7 @@ DEFAULT_LIMITS = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
class RateLimitingMiddleware(base_wsgi.ReddwarfMiddleware):
|
class RateLimitingMiddleware(base_wsgi.TroveMiddleware):
|
||||||
"""
|
"""
|
||||||
Rate-limits requests passing through this middleware. All limit information
|
Rate-limits requests passing through this middleware. All limit information
|
||||||
is stored in memory for this implementation.
|
is stored in memory for this implementation.
|
||||||
@ -211,7 +211,7 @@ class RateLimitingMiddleware(base_wsgi.ReddwarfMiddleware):
|
|||||||
retry = time.time() + delay
|
retry = time.time() + delay
|
||||||
return base_wsgi.OverLimitFault(msg, error, retry)
|
return base_wsgi.OverLimitFault(msg, error, retry)
|
||||||
|
|
||||||
req.environ["reddwarf.limits"] = self._limiter.get_limits(tenant_id)
|
req.environ["trove.limits"] = self._limiter.get_limits(tenant_id)
|
||||||
|
|
||||||
return self.application
|
return self.application
|
||||||
|
|
@ -12,11 +12,11 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
|
|
||||||
from reddwarf.openstack.common import rpc
|
from trove.openstack.common import rpc
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
"""Model classes that form the core of instances functionality."""
|
"""Model classes that form the core of instances functionality."""
|
||||||
|
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.common import remote
|
from trove.common import remote
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
@ -15,27 +15,27 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.openstack.common.importutils import import_class
|
from trove.openstack.common.importutils import import_class
|
||||||
from novaclient.v1_1.client import Client
|
from novaclient.v1_1.client import Client
|
||||||
from swiftclient.client import Connection
|
from swiftclient.client import Connection
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
COMPUTE_URL = CONF.nova_compute_url
|
COMPUTE_URL = CONF.nova_compute_url
|
||||||
PROXY_AUTH_URL = CONF.reddwarf_auth_url
|
PROXY_AUTH_URL = CONF.trove_auth_url
|
||||||
VOLUME_URL = CONF.nova_volume_url
|
VOLUME_URL = CONF.nova_volume_url
|
||||||
OBJECT_STORE_URL = CONF.swift_url
|
OBJECT_STORE_URL = CONF.swift_url
|
||||||
USE_SNET = CONF.backup_use_snet
|
USE_SNET = CONF.backup_use_snet
|
||||||
|
|
||||||
|
|
||||||
def dns_client(context):
|
def dns_client(context):
|
||||||
from reddwarf.dns.manager import DnsManager
|
from trove.dns.manager import DnsManager
|
||||||
return DnsManager()
|
return DnsManager()
|
||||||
|
|
||||||
|
|
||||||
def guest_client(context, id):
|
def guest_client(context, id):
|
||||||
from reddwarf.guestagent.api import API
|
from trove.guestagent.api import API
|
||||||
return API(context, id)
|
return API(context, id)
|
||||||
|
|
||||||
|
|
||||||
@ -50,8 +50,8 @@ def nova_client(context):
|
|||||||
|
|
||||||
def create_admin_nova_client(context):
|
def create_admin_nova_client(context):
|
||||||
"""
|
"""
|
||||||
Creates client that uses reddwarf admin credentials
|
Creates client that uses trove admin credentials
|
||||||
:return: a client for nova for the reddwarf admin
|
:return: a client for nova for the trove admin
|
||||||
"""
|
"""
|
||||||
client = create_nova_client(context)
|
client = create_nova_client(context)
|
||||||
client.client.auth_token = None
|
client.client.auth_token = None
|
@ -21,17 +21,17 @@ import inspect
|
|||||||
import os
|
import os
|
||||||
import kombu
|
import kombu
|
||||||
|
|
||||||
from reddwarf.openstack.common import importutils
|
from trove.openstack.common import importutils
|
||||||
from reddwarf.openstack.common import loopingcall
|
from trove.openstack.common import loopingcall
|
||||||
from reddwarf.openstack.common import rpc as openstack_rpc
|
from trove.openstack.common import rpc as openstack_rpc
|
||||||
from reddwarf.openstack.common.rpc import service as rpc_service
|
from trove.openstack.common.rpc import service as rpc_service
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
|
|
||||||
def delete_queue(context, topic):
|
def delete_queue(context, topic):
|
||||||
if CONF.rpc_backend == "reddwarf.openstack.common.rpc.impl_kombu":
|
if CONF.rpc_backend == "trove.openstack.common.rpc.impl_kombu":
|
||||||
connection = openstack_rpc.create_connection()
|
connection = openstack_rpc.create_connection()
|
||||||
channel = connection.channel
|
channel = connection.channel
|
||||||
durable = connection.conf.rabbit_durable_queues
|
durable = connection.conf.rabbit_durable_queues
|
||||||
@ -46,7 +46,7 @@ class RpcService(rpc_service.Service):
|
|||||||
def __init__(self, host=None, binary=None, topic=None, manager=None):
|
def __init__(self, host=None, binary=None, topic=None, manager=None):
|
||||||
host = host or CONF.host
|
host = host or CONF.host
|
||||||
binary = binary or os.path.basename(inspect.stack()[-1][1])
|
binary = binary or os.path.basename(inspect.stack()[-1][1])
|
||||||
topic = topic or binary.rpartition('reddwarf-')[2]
|
topic = topic or binary.rpartition('trove-')[2]
|
||||||
self.manager_impl = importutils.import_object(manager)
|
self.manager_impl = importutils.import_object(manager)
|
||||||
self.report_interval = CONF.report_interval
|
self.report_interval = CONF.report_interval
|
||||||
super(RpcService, self).__init__(host, topic,
|
super(RpcService, self).__init__(host, topic,
|
@ -33,13 +33,13 @@ from eventlet import semaphore
|
|||||||
from eventlet.green import subprocess
|
from eventlet.green import subprocess
|
||||||
from eventlet.timeout import Timeout
|
from eventlet.timeout import Timeout
|
||||||
|
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.openstack.common import importutils
|
from trove.openstack.common import importutils
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common import processutils
|
from trove.openstack.common import processutils
|
||||||
from reddwarf.openstack.common import timeutils
|
from trove.openstack.common import timeutils
|
||||||
from reddwarf.openstack.common import utils as openstack_utils
|
from trove.openstack.common import utils as openstack_utils
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
import_class = importutils.import_class
|
import_class = importutils.import_class
|
@ -16,7 +16,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
|
||||||
from reddwarf.common import wsgi
|
from trove.common import wsgi
|
||||||
|
|
||||||
|
|
||||||
def create_links(resource_path, request, id):
|
def create_links(resource_path, request, id):
|
@ -14,7 +14,7 @@
|
|||||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
"""Wsgi helper utilities for reddwarf"""
|
"""Wsgi helper utilities for trove"""
|
||||||
|
|
||||||
import eventlet.wsgi
|
import eventlet.wsgi
|
||||||
import math
|
import math
|
||||||
@ -30,19 +30,20 @@ from lxml import etree
|
|||||||
from paste import deploy
|
from paste import deploy
|
||||||
from xml.dom import minidom
|
from xml.dom import minidom
|
||||||
|
|
||||||
from reddwarf.common import context as rd_context
|
from trove.common import context as rd_context
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.common import utils
|
from trove.common import utils
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
from reddwarf.openstack.common import jsonutils
|
from trove.openstack.common import jsonutils
|
||||||
|
|
||||||
from reddwarf.openstack.common import pastedeploy
|
from trove.openstack.common import pastedeploy
|
||||||
from reddwarf.openstack.common import service
|
from trove.openstack.common import service
|
||||||
from reddwarf.openstack.common import wsgi as openstack_wsgi
|
from trove.openstack.common import wsgi as openstack_wsgi
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
|
|
||||||
CONTEXT_KEY = 'reddwarf.context'
|
CONTEXT_KEY = 'trove.context'
|
||||||
|
Router = openstack_wsgi.Router
|
||||||
Debug = openstack_wsgi.Debug
|
Debug = openstack_wsgi.Debug
|
||||||
Middleware = openstack_wsgi.Middleware
|
Middleware = openstack_wsgi.Middleware
|
||||||
JSONDictSerializer = openstack_wsgi.JSONDictSerializer
|
JSONDictSerializer = openstack_wsgi.JSONDictSerializer
|
||||||
@ -52,7 +53,7 @@ RequestDeserializer = openstack_wsgi.RequestDeserializer
|
|||||||
|
|
||||||
eventlet.patcher.monkey_patch(all=False, socket=True)
|
eventlet.patcher.monkey_patch(all=False, socket=True)
|
||||||
|
|
||||||
LOG = logging.getLogger('reddwarf.common.wsgi')
|
LOG = logging.getLogger('trove.common.wsgi')
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
@ -158,7 +159,7 @@ def serializers(**serializers):
|
|||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
|
|
||||||
class ReddwarfMiddleware(Middleware):
|
class TroveMiddleware(Middleware):
|
||||||
|
|
||||||
# Note: taken from nova
|
# Note: taken from nova
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -246,8 +247,8 @@ class Request(openstack_wsgi.Request):
|
|||||||
return 'application/{0}'.format(parts[1])
|
return 'application/{0}'.format(parts[1])
|
||||||
|
|
||||||
ctypes = {
|
ctypes = {
|
||||||
'application/vnd.openstack.reddwarf+json': "application/json",
|
'application/vnd.openstack.trove+json': "application/json",
|
||||||
'application/vnd.openstack.reddwarf+xml': "application/xml",
|
'application/vnd.openstack.trove+xml': "application/xml",
|
||||||
'application/json': "application/json",
|
'application/json': "application/json",
|
||||||
'application/xml': "application/xml",
|
'application/xml': "application/xml",
|
||||||
}
|
}
|
||||||
@ -258,7 +259,7 @@ class Request(openstack_wsgi.Request):
|
|||||||
@utils.cached_property
|
@utils.cached_property
|
||||||
def accept_version(self):
|
def accept_version(self):
|
||||||
accept_header = self.headers.get('ACCEPT', "")
|
accept_header = self.headers.get('ACCEPT', "")
|
||||||
accept_version_re = re.compile(".*?application/vnd.openstack.reddwarf"
|
accept_version_re = re.compile(".*?application/vnd.openstack.trove"
|
||||||
"(\+.+?)?;"
|
"(\+.+?)?;"
|
||||||
"version=(?P<version_no>\d+\.?\d*)")
|
"version=(?P<version_no>\d+\.?\d*)")
|
||||||
|
|
||||||
@ -275,7 +276,7 @@ class Request(openstack_wsgi.Request):
|
|||||||
class Result(object):
|
class Result(object):
|
||||||
"""A result whose serialization is compatable with JSON and XML.
|
"""A result whose serialization is compatable with JSON and XML.
|
||||||
|
|
||||||
This class is used by ReddwarfResponseSerializer, which calls the
|
This class is used by TroveResponseSerializer, which calls the
|
||||||
data method to grab a JSON or XML specific dictionary which it then
|
data method to grab a JSON or XML specific dictionary which it then
|
||||||
passes on to be serialized.
|
passes on to be serialized.
|
||||||
|
|
||||||
@ -325,12 +326,12 @@ class Resource(openstack_wsgi.Resource):
|
|||||||
result = Result(result)
|
result = Result(result)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
except exception.ReddwarfError as reddwarf_error:
|
except exception.TroveError as trove_error:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.debug(traceback.format_exc())
|
||||||
LOG.debug("Caught Reddwarf Error %s", reddwarf_error)
|
LOG.debug("Caught Trove Error %s", trove_error)
|
||||||
httpError = self._get_http_error(reddwarf_error)
|
httpError = self._get_http_error(trove_error)
|
||||||
LOG.debug("Mapped Error to %s", httpError)
|
LOG.debug("Mapped Error to %s", httpError)
|
||||||
return Fault(httpError(str(reddwarf_error), request=request))
|
return Fault(httpError(str(trove_error), request=request))
|
||||||
except webob.exc.HTTPError as http_error:
|
except webob.exc.HTTPError as http_error:
|
||||||
LOG.debug(traceback.format_exc())
|
LOG.debug(traceback.format_exc())
|
||||||
return Fault(http_error)
|
return Fault(http_error)
|
||||||
@ -428,11 +429,11 @@ class Controller(object):
|
|||||||
}
|
}
|
||||||
|
|
||||||
def create_resource(self):
|
def create_resource(self):
|
||||||
serializer = ReddwarfResponseSerializer(
|
serializer = TroveResponseSerializer(
|
||||||
body_serializers={'application/xml': ReddwarfXMLDictSerializer()})
|
body_serializers={'application/xml': TroveXMLDictSerializer()})
|
||||||
return Resource(
|
return Resource(
|
||||||
self,
|
self,
|
||||||
ReddwarfRequestDeserializer(),
|
TroveRequestDeserializer(),
|
||||||
serializer,
|
serializer,
|
||||||
self.exception_map)
|
self.exception_map)
|
||||||
|
|
||||||
@ -447,20 +448,20 @@ class Controller(object):
|
|||||||
*self.exclude_attr))
|
*self.exclude_attr))
|
||||||
|
|
||||||
|
|
||||||
class ReddwarfRequestDeserializer(RequestDeserializer):
|
class TroveRequestDeserializer(RequestDeserializer):
|
||||||
"""Break up a Request object into more useful pieces."""
|
"""Break up a Request object into more useful pieces."""
|
||||||
|
|
||||||
def __init__(self, body_deserializers=None, headers_deserializer=None,
|
def __init__(self, body_deserializers=None, headers_deserializer=None,
|
||||||
supported_content_types=None):
|
supported_content_types=None):
|
||||||
super(ReddwarfRequestDeserializer, self).__init__(
|
super(TroveRequestDeserializer, self).__init__(
|
||||||
body_deserializers,
|
body_deserializers,
|
||||||
headers_deserializer,
|
headers_deserializer,
|
||||||
supported_content_types)
|
supported_content_types)
|
||||||
|
|
||||||
self.body_deserializers['application/xml'] = ReddwarfXMLDeserializer()
|
self.body_deserializers['application/xml'] = TroveXMLDeserializer()
|
||||||
|
|
||||||
|
|
||||||
class ReddwarfXMLDeserializer(XMLDeserializer):
|
class TroveXMLDeserializer(XMLDeserializer):
|
||||||
|
|
||||||
def __init__(self, metadata=None):
|
def __init__(self, metadata=None):
|
||||||
"""
|
"""
|
||||||
@ -470,7 +471,7 @@ class ReddwarfXMLDeserializer(XMLDeserializer):
|
|||||||
if metadata is None:
|
if metadata is None:
|
||||||
metadata = {}
|
metadata = {}
|
||||||
metadata['plurals'] = CUSTOM_PLURALS_METADATA
|
metadata['plurals'] = CUSTOM_PLURALS_METADATA
|
||||||
super(ReddwarfXMLDeserializer, self).__init__(metadata)
|
super(TroveXMLDeserializer, self).__init__(metadata)
|
||||||
|
|
||||||
def default(self, datastring):
|
def default(self, datastring):
|
||||||
# Sanitize the newlines
|
# Sanitize the newlines
|
||||||
@ -480,10 +481,10 @@ class ReddwarfXMLDeserializer(XMLDeserializer):
|
|||||||
'', datastring))}
|
'', datastring))}
|
||||||
|
|
||||||
|
|
||||||
class ReddwarfXMLDictSerializer(openstack_wsgi.XMLDictSerializer):
|
class TroveXMLDictSerializer(openstack_wsgi.XMLDictSerializer):
|
||||||
|
|
||||||
def __init__(self, metadata=None, xmlns=None):
|
def __init__(self, metadata=None, xmlns=None):
|
||||||
super(ReddwarfXMLDictSerializer, self).__init__(metadata, XMLNS)
|
super(TroveXMLDictSerializer, self).__init__(metadata, XMLNS)
|
||||||
|
|
||||||
def default(self, data):
|
def default(self, data):
|
||||||
# We expect data to be a dictionary containing a single key as the XML
|
# We expect data to be a dictionary containing a single key as the XML
|
||||||
@ -517,14 +518,14 @@ class ReddwarfXMLDictSerializer(openstack_wsgi.XMLDictSerializer):
|
|||||||
metadata['attributes'] = CUSTOM_SERIALIZER_METADATA
|
metadata['attributes'] = CUSTOM_SERIALIZER_METADATA
|
||||||
if hasattr(data, "to_xml"):
|
if hasattr(data, "to_xml"):
|
||||||
return data.to_xml()
|
return data.to_xml()
|
||||||
return super(ReddwarfXMLDictSerializer, self)._to_xml_node(
|
return super(TroveXMLDictSerializer, self)._to_xml_node(
|
||||||
doc,
|
doc,
|
||||||
metadata,
|
metadata,
|
||||||
nodename,
|
nodename,
|
||||||
data)
|
data)
|
||||||
|
|
||||||
|
|
||||||
class ReddwarfResponseSerializer(openstack_wsgi.ResponseSerializer):
|
class TroveResponseSerializer(openstack_wsgi.ResponseSerializer):
|
||||||
|
|
||||||
def serialize_body(self, response, data, content_type, action):
|
def serialize_body(self, response, data, content_type, action):
|
||||||
"""Overrides body serialization in openstack_wsgi.ResponseSerializer.
|
"""Overrides body serialization in openstack_wsgi.ResponseSerializer.
|
||||||
@ -536,14 +537,14 @@ class ReddwarfResponseSerializer(openstack_wsgi.ResponseSerializer):
|
|||||||
"""
|
"""
|
||||||
if isinstance(data, Result):
|
if isinstance(data, Result):
|
||||||
data = data.data(content_type)
|
data = data.data(content_type)
|
||||||
super(ReddwarfResponseSerializer, self).serialize_body(
|
super(TroveResponseSerializer, self).serialize_body(
|
||||||
response,
|
response,
|
||||||
data,
|
data,
|
||||||
content_type,
|
content_type,
|
||||||
action)
|
action)
|
||||||
|
|
||||||
def serialize_headers(self, response, data, action):
|
def serialize_headers(self, response, data, action):
|
||||||
super(ReddwarfResponseSerializer, self).serialize_headers(
|
super(TroveResponseSerializer, self).serialize_headers(
|
||||||
response,
|
response,
|
||||||
data,
|
data,
|
||||||
action)
|
action)
|
||||||
@ -642,12 +643,12 @@ class ContextMiddleware(openstack_wsgi.Middleware):
|
|||||||
is_admin = True
|
is_admin = True
|
||||||
break
|
break
|
||||||
limits = self._extract_limits(request.params)
|
limits = self._extract_limits(request.params)
|
||||||
context = rd_context.ReddwarfContext(auth_token=auth_token,
|
context = rd_context.TroveContext(auth_token=auth_token,
|
||||||
tenant=tenant_id,
|
tenant=tenant_id,
|
||||||
user=user,
|
user=user,
|
||||||
is_admin=is_admin,
|
is_admin=is_admin,
|
||||||
limit=limits.get('limit'),
|
limit=limits.get('limit'),
|
||||||
marker=limits.get('marker'))
|
marker=limits.get('marker'))
|
||||||
request.environ[CONTEXT_KEY] = context
|
request.environ[CONTEXT_KEY] = context
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
import optparse
|
import optparse
|
||||||
|
|
||||||
from reddwarf.common import utils
|
from trove.common import utils
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ def add_options(parser):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
help_text = ("The following configuration options are specific to the "
|
help_text = ("The following configuration options are specific to the "
|
||||||
"Reddwarf database.")
|
"Trove database.")
|
||||||
|
|
||||||
group = optparse.OptionGroup(
|
group = optparse.OptionGroup(
|
||||||
parser,
|
parser,
|
@ -12,14 +12,14 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
from reddwarf.db import db_query
|
from trove.db import db_query
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.common import models
|
from trove.common import models
|
||||||
from reddwarf.common import pagination
|
from trove.common import pagination
|
||||||
from reddwarf.common import utils
|
from trove.common import utils
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
@ -20,11 +20,11 @@ from sqlalchemy import and_
|
|||||||
from sqlalchemy import or_
|
from sqlalchemy import or_
|
||||||
from sqlalchemy.orm import aliased
|
from sqlalchemy.orm import aliased
|
||||||
|
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.common import utils
|
from trove.common import utils
|
||||||
from reddwarf.db.sqlalchemy import migration
|
from trove.db.sqlalchemy import migration
|
||||||
from reddwarf.db.sqlalchemy import mappers
|
from trove.db.sqlalchemy import mappers
|
||||||
from reddwarf.db.sqlalchemy import session
|
from trove.db.sqlalchemy import session
|
||||||
|
|
||||||
|
|
||||||
def list(query_func, *args, **kwargs):
|
def list(query_func, *args, **kwargs):
|
@ -1,7 +1,7 @@
|
|||||||
[db_settings]
|
[db_settings]
|
||||||
# Used to identify which repository this database is versioned under.
|
# Used to identify which repository this database is versioned under.
|
||||||
# You can use the name of your project.
|
# You can use the name of your project.
|
||||||
repository_id=Reddwarf Migrations
|
repository_id=Trove Migrations
|
||||||
|
|
||||||
# The name of the database table used to track the schema version.
|
# The name of the database table used to track the schema version.
|
||||||
# This name shouldn't already be used by your project.
|
# This name shouldn't already be used by your project.
|
@ -17,11 +17,11 @@
|
|||||||
|
|
||||||
"""Various conveniences used for migration scripts."""
|
"""Various conveniences used for migration scripts."""
|
||||||
|
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
import sqlalchemy.types
|
import sqlalchemy.types
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger('reddwarf.db.sqlalchemy.migrate_repo.schema')
|
logger = logging.getLogger('trove.db.sqlalchemy.migrate_repo.schema')
|
||||||
|
|
||||||
|
|
||||||
String = lambda length: sqlalchemy.types.String(
|
String = lambda length: sqlalchemy.types.String(
|
@ -20,14 +20,14 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Boolean
|
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import BigInteger
|
from trove.db.sqlalchemy.migrate_repo.schema import BigInteger
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -20,14 +20,14 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Boolean
|
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import BigInteger
|
from trove.db.sqlalchemy.migrate_repo.schema import BigInteger
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -20,14 +20,14 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Boolean
|
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import BigInteger
|
from trove.db.sqlalchemy.migrate_repo.schema import BigInteger
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -20,11 +20,11 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -20,14 +20,14 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Boolean
|
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import BigInteger
|
from trove.db.sqlalchemy.migrate_repo.schema import BigInteger
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -20,10 +20,10 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -15,9 +15,9 @@
|
|||||||
from sqlalchemy.schema import Column
|
from sqlalchemy.schema import Column
|
||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
def upgrade(migrate_engine):
|
@ -16,9 +16,9 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import ColumnDefault
|
from sqlalchemy.schema import ColumnDefault
|
||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
def upgrade(migrate_engine):
|
@ -15,9 +15,9 @@
|
|||||||
from sqlalchemy.schema import Column
|
from sqlalchemy.schema import Column
|
||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Boolean
|
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
def upgrade(migrate_engine):
|
@ -20,12 +20,12 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -16,12 +16,12 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -16,13 +16,13 @@ from sqlalchemy.schema import Column
|
|||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
from sqlalchemy.schema import UniqueConstraint
|
from sqlalchemy.schema import UniqueConstraint
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Float
|
from trove.db.sqlalchemy.migrate_repo.schema import Float
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Boolean
|
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
||||||
|
|
@ -19,13 +19,13 @@ from sqlalchemy import ForeignKey
|
|||||||
from sqlalchemy.schema import Column
|
from sqlalchemy.schema import Column
|
||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import create_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import create_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import drop_tables
|
from trove.db.sqlalchemy.migrate_repo.schema import drop_tables
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Boolean
|
from trove.db.sqlalchemy.migrate_repo.schema import Boolean
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import DateTime
|
from trove.db.sqlalchemy.migrate_repo.schema import DateTime
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
meta = MetaData()
|
meta = MetaData()
|
@ -15,9 +15,9 @@
|
|||||||
from sqlalchemy.schema import Column
|
from sqlalchemy.schema import Column
|
||||||
from sqlalchemy.schema import MetaData
|
from sqlalchemy.schema import MetaData
|
||||||
|
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Integer
|
from trove.db.sqlalchemy.migrate_repo.schema import Integer
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import String
|
from trove.db.sqlalchemy.migrate_repo.schema import String
|
||||||
from reddwarf.db.sqlalchemy.migrate_repo.schema import Table
|
from trove.db.sqlalchemy.migrate_repo.schema import Table
|
||||||
|
|
||||||
|
|
||||||
def upgrade(migrate_engine):
|
def upgrade(migrate_engine):
|
@ -15,7 +15,7 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from migrate.versioning import api as versioning_api
|
from migrate.versioning import api as versioning_api
|
||||||
@ -26,10 +26,10 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from migrate import exceptions as versioning_exceptions
|
from migrate import exceptions as versioning_exceptions
|
||||||
|
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger('reddwarf.db.sqlalchemy.migration')
|
logger = logging.getLogger('trove.db.sqlalchemy.migration')
|
||||||
|
|
||||||
|
|
||||||
def db_version(options, repo_path=None):
|
def db_version(options, repo_path=None):
|
@ -20,10 +20,10 @@ from sqlalchemy import create_engine
|
|||||||
from sqlalchemy import MetaData
|
from sqlalchemy import MetaData
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
|
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
from reddwarf.db.sqlalchemy import mappers
|
from trove.db.sqlalchemy import mappers
|
||||||
|
|
||||||
_ENGINE = None
|
_ENGINE = None
|
||||||
_MAKER = None
|
_MAKER = None
|
||||||
@ -41,13 +41,13 @@ def configure_db(options, models_mapper=None):
|
|||||||
if models_mapper:
|
if models_mapper:
|
||||||
models_mapper.map(_ENGINE)
|
models_mapper.map(_ENGINE)
|
||||||
else:
|
else:
|
||||||
from reddwarf.instance import models as base_models
|
from trove.instance import models as base_models
|
||||||
from reddwarf.dns import models as dns_models
|
from trove.dns import models as dns_models
|
||||||
from reddwarf.extensions.mysql import models as mysql_models
|
from trove.extensions.mysql import models as mysql_models
|
||||||
from reddwarf.guestagent import models as agent_models
|
from trove.guestagent import models as agent_models
|
||||||
from reddwarf.quota import models as quota_models
|
from trove.quota import models as quota_models
|
||||||
from reddwarf.backup import models as backup_models
|
from trove.backup import models as backup_models
|
||||||
from reddwarf.extensions.security_group import models as secgrp_models
|
from trove.extensions.security_group import models as secgrp_models
|
||||||
|
|
||||||
model_modules = [
|
model_modules = [
|
||||||
base_models,
|
base_models,
|
@ -18,10 +18,10 @@
|
|||||||
"""
|
"""
|
||||||
Dns manager.
|
Dns manager.
|
||||||
"""
|
"""
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
|
|
||||||
from reddwarf.common import utils
|
from trove.common import utils
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ class DnsManager(object):
|
|||||||
def create_instance_entry(self, instance_id, content):
|
def create_instance_entry(self, instance_id, content):
|
||||||
"""Connects a new instance with a DNS entry.
|
"""Connects a new instance with a DNS entry.
|
||||||
|
|
||||||
:param instance_id: The reddwarf instance_id to associate.
|
:param instance_id: The trove instance_id to associate.
|
||||||
:param content: The IP content attached to the instance.
|
:param content: The IP content attached to the instance.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -61,7 +61,7 @@ class DnsManager(object):
|
|||||||
def delete_instance_entry(self, instance_id, content=None):
|
def delete_instance_entry(self, instance_id, content=None):
|
||||||
"""Removes a DNS entry associated to an instance.
|
"""Removes a DNS entry associated to an instance.
|
||||||
|
|
||||||
:param instance_id: The reddwarf instance id to associate.
|
:param instance_id: The trove instance id to associate.
|
||||||
:param content: The IP content attached to the instance.
|
:param content: The IP content attached to the instance.
|
||||||
|
|
||||||
"""
|
"""
|
@ -20,11 +20,11 @@ Model classes that map instance Ip to dns record.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
from reddwarf.db import get_db_api
|
from trove.db import get_db_api
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.common.models import ModelBase
|
from trove.common.models import ModelBase
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.openstack.common.gettextutils import _
|
from trove.openstack.common.gettextutils import _
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
@ -23,15 +23,15 @@ __version__ = '2.4'
|
|||||||
|
|
||||||
import hashlib
|
import hashlib
|
||||||
|
|
||||||
from reddwarf.openstack.common import log as logging
|
from trove.openstack.common import log as logging
|
||||||
from reddwarf.common import cfg
|
from trove.common import cfg
|
||||||
from reddwarf.common import exception
|
from trove.common import exception
|
||||||
from reddwarf.common.exception import NotFound
|
from trove.common.exception import NotFound
|
||||||
from reddwarf.dns.models import DnsRecord
|
from trove.dns.models import DnsRecord
|
||||||
from rsdns.client import DNSaas
|
from rsdns.client import DNSaas
|
||||||
from rsdns.client.future import RsDnsError
|
from rsdns.client.future import RsDnsError
|
||||||
|
|
||||||
from reddwarf.dns.driver import DnsEntry
|
from trove.dns.driver import DnsEntry
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user