On 23/05/14 14:54, Mark Kirkwood wrote:
$ trove database-list 5d5f1a47-973d-4e11-8937-73b971a94688
ERROR: The resource could not be found.
This seems to be due to missing routes:
2014-05-23 14:34:08.386 1376 DEBUG routes.middleware [-] No route
matched for GET
/51f1e3dd3c1d4124ae26cdcd85030eb5/instances/5d5f1a47-973d-4e11-8937-73b971a94688/databases
__call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:97
2014-05-23 14:34:08.386 1376 DEBUG routes.middleware [-] No route
matched for GET
/51f1e3dd3c1d4124ae26cdcd85030eb5/instances/5d5f1a47-973d-4e11-8937-73b971a94688/databases
__call__ /usr/lib/python2.7/dist-packages/routes/middleware.py:97
2014-05-23 14:34:08.389 1376 INFO eventlet.wsgi
[req-6ff08fd3-90e6-4893-aaab-e645f6b82407
3a0eb39ed587491aba95b5ca15e167be 51f1e3dd3c1d4124ae26cdcd85030eb5 - - -]
192.168.122.33 - - [23/May/2014 14:34:08] "GET
/v1.0/51f1e3dd3c1d4124ae26cdcd85030eb5/instances/5d5f1a47-973d-4e11-8937-73b971a94688/databases
HTTP/1.1" 404 208 0.052359
I have an equivalent-ish devstack system configured the same (but
slightly later openstack version), and that works fine viz:
$ trove database-list f164a72e-e627-427e-b962-f12b795499c0
2014-05-23 14:28:59.331 DEBUG routes.middleware [-] Matched GET
/c081f35aa9d94dda8dc4f2686f855b37/instances/f164a72e-e627-427e-b962-f12b795499c0/databases
from (pid=21402) __call__
/usr/lib/python2.7/dist-packages/routes/middleware.py:100
2014-05-23 14:28:59.332 DEBUG routes.middleware [-] Route path:
'/{tenant_id}/instances/:instance_id/databases', defaults: {'action':
u'index', 'controller': <trove.common.wsgi.Resource object at
0x4515190>} from (pid=21402) __call__
/usr/lib/python2.7/dist-packages/routes/middleware.py:102
2014-05-23 14:28:59.332 DEBUG routes.middleware [-] Match dict:
{'instance_id': u'f164a72e-e627-427e-b962-f12b795499c0', 'tenant_id':
u'c081f35aa9d94dda8dc4f2686f855b37', 'controller':
<trove.common.wsgi.Resource object at 0x4515190>, 'action': u'index'}
from (pid=21402) __call__
/usr/lib/python2.7/dist-packages/routes/middleware.py:103
I've attached the config files from the 14.04 trove install - any
thoughts welcome!
Doing a bit of digging, amending routes/middleware.py (line 92 onwards)
with:
if self.log_debug:
urlinfo = "%s %s" % (environ['REQUEST_METHOD'],
environ['PATH_INFO'])
if 'databases' in urlinfo:
log.debug("Route table\n %s", self.mapper.__str__())
and comparing between the resulting devstack and packaged tables (see
attached) makes it plain that I'm missing the database routes. I'm going
to hunt around and try to see where these are being set (and why they
are not more to the point). If anyone happens to know this stuff well,
please chime in and save me :-)
regards
Mark
2014-05-29 16:42:29.099 29742 DEBUG routes.middleware [-] Route table
Route name Methods Path
POST /extensions.:(format)
POST /extensions
formatted_extensions GET /extensions.:(format)
extensions GET /extensions
formatted_new_extensions GET /extensions/new.:(format)
new_extensions GET /extensions/new
PUT /extensions/:(id).:(format)
PUT /extensions/:(id)
DELETE /extensions/:(id).:(format)
DELETE /extensions/:(id)
formatted_edit_extensions GET /extensions/:(id)/edit.:(format)
edit_extensions GET /extensions/:(id)/edit
formatted_extensions GET /extensions/:(id).:(format)
extensions GET /extensions/:(id)
POST /{tenant_id}/mgmt/accounts.:(format)
POST /{tenant_id}/mgmt/accounts
formatted_{tenant_id}/mgmt/accounts GET /{tenant_id}/mgmt/accounts.:(format)
{tenant_id}/mgmt/accounts GET /{tenant_id}/mgmt/accounts
formatted_new_{tenant_id}/mgmt/accounts GET /{tenant_id}/mgmt/accounts/new.:(format)
new_{tenant_id}/mgmt/accounts GET /{tenant_id}/mgmt/accounts/new
PUT /{tenant_id}/mgmt/accounts/:(id).:(format)
PUT /{tenant_id}/mgmt/accounts/:(id)
DELETE /{tenant_id}/mgmt/accounts/:(id).:(format)
DELETE /{tenant_id}/mgmt/accounts/:(id)
formatted_edit_{tenant_id}/mgmt/accounts GET /{tenant_id}/mgmt/accounts/:(id)/edit.:(format)
edit_{tenant_id}/mgmt/accounts GET /{tenant_id}/mgmt/accounts/:(id)/edit
formatted_{tenant_id}/mgmt/accounts GET /{tenant_id}/mgmt/accounts/:(id).:(format)
{tenant_id}/mgmt/accounts GET /{tenant_id}/mgmt/accounts/:(id)
POST /{tenant_id}/instances/:instance_id/databases.:(format)
POST /{tenant_id}/instances/:instance_id/databases
formatted_instance_databases GET /{tenant_id}/instances/:instance_id/databases.:(format)
instance_databases GET /{tenant_id}/instances/:instance_id/databases
formatted_instance_new_databases GET /{tenant_id}/instances/:instance_id/databases/new.:(format)
instance_new_databases GET /{tenant_id}/instances/:instance_id/databases/new
PUT /{tenant_id}/instances/:instance_id/databases/:(id).:(format)
PUT /{tenant_id}/instances/:instance_id/databases/:(id)
DELETE /{tenant_id}/instances/:instance_id/databases/:(id).:(format)
DELETE /{tenant_id}/instances/:instance_id/databases/:(id)
formatted_instance_edit_databases GET /{tenant_id}/instances/:instance_id/databases/:(id)/edit.:(format)
instance_edit_databases GET /{tenant_id}/instances/:instance_id/databases/:(id)/edit
formatted_instance_databases GET /{tenant_id}/instances/:instance_id/databases/:(id).:(format)
instance_databases GET /{tenant_id}/instances/:instance_id/databases/:(id)
PUT /{tenant_id}/instances/{instance_id}/users/update_all
PUT /{tenant_id}/instances/{instance_id}/users/update_all.:(format)
PUT /{tenant_id}/instances/:instance_id/users.:(format)
PUT /{tenant_id}/instances/:instance_id/users
POST /{tenant_id}/instances/:instance_id/users.:(format)
POST /{tenant_id}/instances/:instance_id/users
formatted_instance_users GET /{tenant_id}/instances/:instance_id/users.:(format)
instance_users GET /{tenant_id}/instances/:instance_id/users
formatted_instance_new_users GET /{tenant_id}/instances/:instance_id/users/new.:(format)
instance_new_users GET /{tenant_id}/instances/:instance_id/users/new
formatted_instance_update_users PUT /{tenant_id}/instances/:instance_id/users/:(id)/update.:(format)
instance_update_users PUT /{tenant_id}/instances/:instance_id/users/:(id)/update
PUT /{tenant_id}/instances/:instance_id/users/:(id).:(format)
PUT /{tenant_id}/instances/:instance_id/users/:(id)
DELETE /{tenant_id}/instances/:instance_id/users/:(id).:(format)
DELETE /{tenant_id}/instances/:instance_id/users/:(id)
formatted_instance_edit_users GET /{tenant_id}/instances/:instance_id/users/:(id)/edit.:(format)
instance_edit_users GET /{tenant_id}/instances/:instance_id/users/:(id)/edit
formatted_instance_users GET /{tenant_id}/instances/:instance_id/users/:(id).:(format)
instance_users GET /{tenant_id}/instances/:instance_id/users/:(id)
PUT /{tenant_id}/instances/:instance_id/users/{user_id}/databases/update
PUT /{tenant_id}/instances/:instance_id/users/{user_id}/databases/update.:(format)
PUT /{tenant_id}/instances/:instance_id/users/:user_id/databases.:(format)
PUT /{tenant_id}/instances/:instance_id/users/:user_id/databases
POST /{tenant_id}/instances/:instance_id/users/:user_id/databases.:(format)
POST /{tenant_id}/instances/:instance_id/users/:user_id/databases
formatted_user_databases GET /{tenant_id}/instances/:instance_id/users/:user_id/databases.:(format)
user_databases GET /{tenant_id}/instances/:instance_id/users/:user_id/databases
formatted_user_new_databases GET /{tenant_id}/instances/:instance_id/users/:user_id/databases/new.:(format)
user_new_databases GET /{tenant_id}/instances/:instance_id/users/:user_id/databases/new
PUT /{tenant_id}/instances/:instance_id/users/:user_id/databases/:(id).:(format)
PUT /{tenant_id}/instances/:instance_id/users/:user_id/databases/:(id)
DELETE /{tenant_id}/instances/:instance_id/users/:user_id/databases/:(id).:(format)
DELETE /{tenant_id}/instances/:instance_id/users/:user_id/databases/:(id)
formatted_user_edit_databases GET /{tenant_id}/instances/:instance_id/users/:user_id/databases/:(id)/edit.:(format)
user_edit_databases GET /{tenant_id}/instances/:instance_id/users/:user_id/databases/:(id)/edit
formatted_user_databases GET /{tenant_id}/instances/:instance_id/users/:user_id/databases/:(id).:(format)
user_databases GET /{tenant_id}/instances/:instance_id/users/:user_id/databases/:(id)
POST /{tenant_id}/instances/:instance_id/root.:(format)
POST /{tenant_id}/instances/:instance_id/root
formatted_instance_root GET /{tenant_id}/instances/:instance_id/root.:(format)
instance_root GET /{tenant_id}/instances/:instance_id/root
formatted_instance_new_root GET /{tenant_id}/instances/:instance_id/root/new.:(format)
instance_new_root GET /{tenant_id}/instances/:instance_id/root/new
PUT /{tenant_id}/instances/:instance_id/root/:(id).:(format)
PUT /{tenant_id}/instances/:instance_id/root/:(id)
DELETE /{tenant_id}/instances/:instance_id/root/:(id).:(format)
DELETE /{tenant_id}/instances/:instance_id/root/:(id)
formatted_instance_edit_root GET /{tenant_id}/instances/:instance_id/root/:(id)/edit.:(format)
instance_edit_root GET /{tenant_id}/instances/:instance_id/root/:(id)/edit
formatted_instance_root GET /{tenant_id}/instances/:instance_id/root/:(id).:(format)
instance_root GET /{tenant_id}/instances/:instance_id/root/:(id)
POST /{tenant_id}/security-groups.:(format)
POST /{tenant_id}/security-groups
formatted_{tenant_id}/security-groups GET /{tenant_id}/security-groups.:(format)
{tenant_id}/security-groups GET /{tenant_id}/security-groups
formatted_new_{tenant_id}/security-groups GET /{tenant_id}/security-groups/new.:(format)
new_{tenant_id}/security-groups GET /{tenant_id}/security-groups/new
PUT /{tenant_id}/security-groups/:(id).:(format)
PUT /{tenant_id}/security-groups/:(id)
DELETE /{tenant_id}/security-groups/:(id).:(format)
DELETE /{tenant_id}/security-groups/:(id)
formatted_edit_{tenant_id}/security-groups GET /{tenant_id}/security-groups/:(id)/edit.:(format)
edit_{tenant_id}/security-groups GET /{tenant_id}/security-groups/:(id)/edit
formatted_{tenant_id}/security-groups GET /{tenant_id}/security-groups/:(id).:(format)
{tenant_id}/security-groups GET /{tenant_id}/security-groups/:(id)
POST /{tenant_id}/security-group-rules.:(format)
POST /{tenant_id}/security-group-rules
formatted_{tenant_id}/security-group-rules GET /{tenant_id}/security-group-rules.:(format)
{tenant_id}/security-group-rules GET /{tenant_id}/security-group-rules
formatted_new_{tenant_id}/security-group-rules GET /{tenant_id}/security-group-rules/new.:(format)
new_{tenant_id}/security-group-rules GET /{tenant_id}/security-group-rules/new
PUT /{tenant_id}/security-group-rules/:(id).:(format)
PUT /{tenant_id}/security-group-rules/:(id)
DELETE /{tenant_id}/security-group-rules/:(id).:(format)
DELETE /{tenant_id}/security-group-rules/:(id)
formatted_edit_{tenant_id}/security-group-rules GET /{tenant_id}/security-group-rules/:(id)/edit.:(format)
edit_{tenant_id}/security-group-rules GET /{tenant_id}/security-group-rules/:(id)/edit
formatted_{tenant_id}/security-group-rules GET /{tenant_id}/security-group-rules/:(id).:(format)
{tenant_id}/security-group-rules GET /{tenant_id}/security-group-rules/:(id)
POST /{tenant_id}/mgmt/instances.:(format)
POST /{tenant_id}/mgmt/instances
formatted_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances.:(format)
{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances
formatted_new_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/new.:(format)
new_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/new
PUT /{tenant_id}/mgmt/instances/:(id).:(format)
PUT /{tenant_id}/mgmt/instances/:(id)
formatted_action_{tenant_id}/mgmt/instances POST /{tenant_id}/mgmt/instances/:(id)/action.:(format)
action_{tenant_id}/mgmt/instances POST /{tenant_id}/mgmt/instances/:(id)/action
DELETE /{tenant_id}/mgmt/instances/:(id).:(format)
DELETE /{tenant_id}/mgmt/instances/:(id)
formatted_hwinfo_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)/hwinfo.:(format)
hwinfo_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)/hwinfo
formatted_root_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)/root.:(format)
root_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)/root
formatted_edit_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)/edit.:(format)
edit_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)/edit
formatted_diagnostics_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)/diagnostics.:(format)
diagnostics_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)/diagnostics
formatted_{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id).:(format)
{tenant_id}/mgmt/instances GET /{tenant_id}/mgmt/instances/:(id)
POST /{tenant_id}/mgmt/hosts.:(format)
POST /{tenant_id}/mgmt/hosts
formatted_{tenant_id}/mgmt/hosts GET /{tenant_id}/mgmt/hosts.:(format)
{tenant_id}/mgmt/hosts GET /{tenant_id}/mgmt/hosts
formatted_new_{tenant_id}/mgmt/hosts GET /{tenant_id}/mgmt/hosts/new.:(format)
new_{tenant_id}/mgmt/hosts GET /{tenant_id}/mgmt/hosts/new
PUT /{tenant_id}/mgmt/hosts/:(id).:(format)
PUT /{tenant_id}/mgmt/hosts/:(id)
DELETE /{tenant_id}/mgmt/hosts/:(id).:(format)
DELETE /{tenant_id}/mgmt/hosts/:(id)
formatted_edit_{tenant_id}/mgmt/hosts GET /{tenant_id}/mgmt/hosts/:(id)/edit.:(format)
edit_{tenant_id}/mgmt/hosts GET /{tenant_id}/mgmt/hosts/:(id)/edit
formatted_{tenant_id}/mgmt/hosts GET /{tenant_id}/mgmt/hosts/:(id).:(format)
{tenant_id}/mgmt/hosts GET /{tenant_id}/mgmt/hosts/:(id)
POST /{tenant_id}/mgmt/quotas.:(format)
POST /{tenant_id}/mgmt/quotas
formatted_{tenant_id}/mgmt/quotas GET /{tenant_id}/mgmt/quotas.:(format)
{tenant_id}/mgmt/quotas GET /{tenant_id}/mgmt/quotas
formatted_new_{tenant_id}/mgmt/quotas GET /{tenant_id}/mgmt/quotas/new.:(format)
new_{tenant_id}/mgmt/quotas GET /{tenant_id}/mgmt/quotas/new
PUT /{tenant_id}/mgmt/quotas/:(id).:(format)
PUT /{tenant_id}/mgmt/quotas/:(id)
DELETE /{tenant_id}/mgmt/quotas/:(id).:(format)
DELETE /{tenant_id}/mgmt/quotas/:(id)
formatted_edit_{tenant_id}/mgmt/quotas GET /{tenant_id}/mgmt/quotas/:(id)/edit.:(format)
edit_{tenant_id}/mgmt/quotas GET /{tenant_id}/mgmt/quotas/:(id)/edit
formatted_{tenant_id}/mgmt/quotas GET /{tenant_id}/mgmt/quotas/:(id).:(format)
{tenant_id}/mgmt/quotas GET /{tenant_id}/mgmt/quotas/:(id)
POST /{tenant_id}/mgmt/storage.:(format)
POST /{tenant_id}/mgmt/storage
formatted_{tenant_id}/mgmt/storage GET /{tenant_id}/mgmt/storage.:(format)
{tenant_id}/mgmt/storage GET /{tenant_id}/mgmt/storage
formatted_new_{tenant_id}/mgmt/storage GET /{tenant_id}/mgmt/storage/new.:(format)
new_{tenant_id}/mgmt/storage GET /{tenant_id}/mgmt/storage/new
PUT /{tenant_id}/mgmt/storage/:(id).:(format)
PUT /{tenant_id}/mgmt/storage/:(id)
DELETE /{tenant_id}/mgmt/storage/:(id).:(format)
DELETE /{tenant_id}/mgmt/storage/:(id)
formatted_edit_{tenant_id}/mgmt/storage GET /{tenant_id}/mgmt/storage/:(id)/edit.:(format)
edit_{tenant_id}/mgmt/storage GET /{tenant_id}/mgmt/storage/:(id)/edit
formatted_{tenant_id}/mgmt/storage GET /{tenant_id}/mgmt/storage/:(id).:(format)
{tenant_id}/mgmt/storage GET /{tenant_id}/mgmt/storage/:(id)
POST /{tenant_id}/mgmt/hosts/{host_id}/instances/action
POST /{tenant_id}/mgmt/hosts/{host_id}/instances/action.:(format)
formatted_host_action_instances POST /{tenant_id}/mgmt/hosts/:host_id/instances/action.:(format)
host_action_instances POST /{tenant_id}/mgmt/hosts/:host_id/instances/action
POST /{tenant_id}/mgmt/hosts/:host_id/instances.:(format)
POST /{tenant_id}/mgmt/hosts/:host_id/instances
formatted_host_instances GET /{tenant_id}/mgmt/hosts/:host_id/instances.:(format)
host_instances GET /{tenant_id}/mgmt/hosts/:host_id/instances
formatted_host_new_instances GET /{tenant_id}/mgmt/hosts/:host_id/instances/new.:(format)
host_new_instances GET /{tenant_id}/mgmt/hosts/:host_id/instances/new
PUT /{tenant_id}/mgmt/hosts/:host_id/instances/:(id).:(format)
PUT /{tenant_id}/mgmt/hosts/:host_id/instances/:(id)
DELETE /{tenant_id}/mgmt/hosts/:host_id/instances/:(id).:(format)
DELETE /{tenant_id}/mgmt/hosts/:host_id/instances/:(id)
formatted_host_edit_instances GET /{tenant_id}/mgmt/hosts/:host_id/instances/:(id)/edit.:(format)
host_edit_instances GET /{tenant_id}/mgmt/hosts/:host_id/instances/:(id)/edit
formatted_host_instances GET /{tenant_id}/mgmt/hosts/:host_id/instances/:(id).:(format)
host_instances GET /{tenant_id}/mgmt/hosts/:host_id/instances/:(id)
2014-05-29 16:47:29.099 19732 DEBUG routes.middleware [-] Route table
Route name Methods Path
GET /{tenant_id}/instances
POST /{tenant_id}/instances
GET /{tenant_id}/instances/{id}
POST /{tenant_id}/instances/{id}/action
PUT /{tenant_id}/instances/{id}
DELETE /{tenant_id}/instances/{id}
GET /{tenant_id}/instances/{id}/backups
GET /{tenant_id}/instances/{id}/configuration
POST /{tenant_id}/datastores.:(format)
POST /{tenant_id}/datastores
formatted_/{tenant_id}/datastores GET /{tenant_id}/datastores.:(format)
/{tenant_id}/datastores GET /{tenant_id}/datastores
formatted_new_datastore GET /{tenant_id}/datastores/new.:(format)
new_datastore GET /{tenant_id}/datastores/new
PUT /{tenant_id}/datastores/:(id).:(format)
PUT /{tenant_id}/datastores/:(id)
DELETE /{tenant_id}/datastores/:(id).:(format)
DELETE /{tenant_id}/datastores/:(id)
formatted_edit_datastore GET /{tenant_id}/datastores/:(id)/edit.:(format)
edit_datastore GET /{tenant_id}/datastores/:(id)/edit
formatted_datastore GET /{tenant_id}/datastores/:(id).:(format)
datastore GET /{tenant_id}/datastores/:(id)
/{tenant_id}/datastores/{datastore}/versions
/{tenant_id}/datastores/{datastore}/versions/{id}
/{tenant_id}/datastores/versions/{uuid}
GET /{tenant_id}/flavors
GET /{tenant_id}/flavors/{id}
GET /
GET /{tenant_id}/limits
GET /{tenant_id}/backups
POST /{tenant_id}/backups
GET /{tenant_id}/backups/{id}
POST /{tenant_id}/backups/{id}
DELETE /{tenant_id}/backups/{id}
GET /{tenant_id}/datastores/versions/{version}/parameters
GET /{tenant_id}/datastores/versions/{version}/parameters/{name}
GET /{tenant_id}/datastores/{datastore}/versions/{id}/parameters
GET /{tenant_id}/datastores/{datastore}/versions/{id}/parameters/{name}
GET /{tenant_id}/configurations
POST /{tenant_id}/configurations
GET /{tenant_id}/configurations/{id}
GET /{tenant_id}/configurations/{id}/instances
PATCH /{tenant_id}/configurations/{id}
PUT /{tenant_id}/configurations/{id}
DELETE /{tenant_id}/configurations/{id}
_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to : [email protected]
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack