[Openstack] HEAT - Prohibited endpoint redirect

Therese Persson therese.persson at ericsson.com
Wed Nov 13 16:21:23 UTC 2013


Hi,

I have installed Heat on my controller node and it worked fine two days ago, but now I have encountered some problems.
I am still able to create stacks, but I can't delete the stacks I have created. I can delete the instances manually, but when I try to delete the stacks I get this message:

Prohibited endpoint redirect http://[EXTERNAL_IP]:8004/v1/%5C519c6e2d263049adba404441f18aac40/stacks/stack4/e67ba337-3f5a-4184-ad45-8445cbfd2d0c

I also get the same message when I do the command "heat stack-show". I can't find anything related to the problem in my heat logs.

/var/log/apache2/error.log:

[Wed Nov 13 15:59:56 2013] [error] Internal Server Error: /horizon/project/stacks/
[Wed Nov 13 15:59:56 2013] [error] Traceback (most recent call last):
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 115, in get_response
[Wed Nov 13 15:59:56 2013] [error]     response = callback(request, *callback_args, **callback_kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 38, in dec
[Wed Nov 13 15:59:56 2013] [error]     return view_func(request, *args, **kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 54, in dec
[Wed Nov 13 15:59:56 2013] [error]     return view_func(request, *args, **kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 38, in dec
[Wed Nov 13 15:59:56 2013] [error]     return view_func(request, *args, **kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/decorators.py", line 86, in dec
[Wed Nov 13 15:59:56 2013] [error]     return view_func(request, *args, **kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py", line 68, in view
[Wed Nov 13 15:59:56 2013] [error]     return self.dispatch(request, *args, **kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py", line 86, in dispatch
[Wed Nov 13 15:59:56 2013] [error]     return handler(request, *args, **kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/views.py", line 163, in post
[Wed Nov 13 15:59:56 2013] [error]     return self.get(request, *args, **kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/views.py", line 155, in get
[Wed Nov 13 15:59:56 2013] [error]     handled = self.construct_tables()
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/views.py", line 146, in construct_tables
[Wed Nov 13 15:59:56 2013] [error]     handled = self.handle_table(table)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/views.py", line 121, in handle_table
[Wed Nov 13 15:59:56 2013] [error]     handled = self._tables[name].maybe_handle()
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/base.py", line 1256, in maybe_handle
[Wed Nov 13 15:59:56 2013] [error]     return self.take_action(action_name, obj_id)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/base.py", line 1189, in take_action
[Wed Nov 13 15:59:56 2013] [error]     response = action.multiple(self, self.request, obj_ids)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/actions.py", line 263, in multiple
[Wed Nov 13 15:59:56 2013] [error]     return self.handle(data_table, request, object_ids)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/actions.py", line 617, in handle
[Wed Nov 13 15:59:56 2013] [error]     exceptions.handle(request, ignore=ignore)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/horizon/tables/actions.py", line 601, in handle
[Wed Nov 13 15:59:56 2013] [error]     self.action(request, datum_id)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/dashboards/project/stacks/tables.py", line 46, in action
[Wed Nov 13 15:59:56 2013] [error]     api.heat.stack_delete(request, stack_id)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/share/openstack-dashboard/openstack_dashboard/wsgi/../../openstack_dashboard/api/heat.py", line 60, in stack_delete
[Wed Nov 13 15:59:56 2013] [error]     return heatclient(request).stacks.delete(stack_id)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 117, in delete
[Wed Nov 13 15:59:56 2013] [error]     self._delete("/stacks/%s" % stack_id)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/heatclient/common/base.py", line 64, in _delete
[Wed Nov 13 15:59:56 2013] [error]     self.api.raw_request('DELETE', url)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 212, in raw_request
[Wed Nov 13 15:59:56 2013] [error]     return self._http_request(url, method, **kwargs)
[Wed Nov 13 15:59:56 2013] [error]   File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 172, in _http_request
[Wed Nov 13 15:59:56 2013] [error]     raise exc.InvalidEndpoint(message=message)
[Wed Nov 13 15:59:56 2013] [error] InvalidEndpoint: Prohibited endpoint redirect http://[EXTERNAL_IP]:8004/v1/%5C519c6e2d263049adba404441f18aab60/stacks/stack5/5141061b-67b4-4a15-b32f-bacfa15864dc


Heat.conf:

sql_connection = mysql://heat:heat@10.10.10.51/heat

[keystone_authtoken]
auth_host = 10.10.10.51
auth_uri = http://10.10.10.51:35357/v2.0
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = heat
admin_password = heat

Everything else is commented.

/etc/heat/api-paste.ini:

# heat-api pipeline
[pipeline:heat-api]
pipeline = faultwrap versionnegotiation authtoken context apiv1app

# heat-api pipeline for standalone heat
# ie. uses alternative auth backend that authenticates users against keystone
# using username and password instead of validating token (which requires
# an admin/service token).
# To enable, in heat.conf:
#   [paste_deploy]
#   flavor = standalone
#
[pipeline:heat-api-standalone]
pipeline = faultwrap versionnegotiation authpassword context apiv1app

# heat-api pipeline for custom cloud backends
# i.e. in heat.conf:
#   [paste_deploy]
#   flavor = custombackend
#
[pipeline:heat-api-custombackend]
pipeline = faultwrap versionnegotiation context custombackendauth apiv1app

# heat-api-cfn pipeline
[pipeline:heat-api-cfn]
pipeline = cfnversionnegotiation ec2authtoken authtoken context apicfnv1app

# heat-api-cfn pipeline for standalone heat
# relies exclusively on authenticating with ec2 signed requests
[pipeline:heat-api-cfn-standalone]
pipeline = cfnversionnegotiation ec2authtoken context apicfnv1app

# heat-api-cloudwatch pipeline
[pipeline:heat-api-cloudwatch]
pipeline = versionnegotiation ec2authtoken authtoken context apicwapp

# heat-api-cloudwatch pipeline for standalone heat
# relies exclusively on authenticating with ec2 signed requests
[pipeline:heat-api-cloudwatch-standalone]
pipeline = versionnegotiation ec2authtoken context apicwapp

[app:apiv1app]
paste.app_factory = heat.common.wsgi:app_factory
heat.app_factory = heat.api.openstack.v1:API

[app:apicfnv1app]
paste.app_factory = heat.common.wsgi:app_factory
heat.app_factory = heat.api.cfn.v1:API

[app:apicwapp]
paste.app_factory = heat.common.wsgi:app_factory
heat.app_factory = heat.api.cloudwatch:API

[filter:versionnegotiation]
paste.filter_factory = heat.common.wsgi:filter_factory
heat.filter_factory = heat.api.openstack:version_negotiation_filter

[filter:faultwrap]
paste.filter_factory = heat.common.wsgi:filter_factory
heat.filter_factory = heat.api.openstack:faultwrap_filter

[filter:cfnversionnegotiation]
paste.filter_factory = heat.common.wsgi:filter_factory
heat.filter_factory = heat.api.cfn:version_negotiation_filter

[filter:cwversionnegotiation]
paste.filter_factory = heat.common.wsgi:filter_factory
heat.filter_factory = heat.api.cloudwatch:version_negotiation_filter

[filter:context]
paste.filter_factory = heat.common.context:ContextMiddleware_filter_factory

[filter:ec2authtoken]
paste.filter_factory = heat.api.aws.ec2token:EC2Token_filter_factory

# Auth middleware that validates token against keystone
[filter:authtoken]
paste.filter_factory = heat.common.auth_token:filter_factory
auth_uri = http://10.10.10.51:35357/v2.0

# Auth middleware that validates username/password against keystone
[filter:authpassword]
paste.filter_factory = heat.common.auth_password:filter_factory

# Auth middleware that validates against custom backend
[filter:custombackendauth]
paste.filter_factory = heat.common.custom_backend_auth:filter_factory

Any ideas?

/Therese
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20131113/ad556e25/attachment.html>


More information about the Openstack mailing list