[Openstack] HEAT - Prohibited endpoint redirect

Jean-Daniel BUSSY silversurfer972 at gmail.com
Wed Nov 20 06:23:38 UTC 2013


​​Ok I looked the endpoints list in a fresh devstack I here is what I found:

| 757f96ee33f14fdeac43788cc403ffe6 | RegionOne |
http://10.0.2.15:8004/v1/$(tenant_id)s |
http://10.0.2.15:8004/v1/$(tenant_id)s |
http://10.0.2.15:8004/v1/$(tenant_id)s | ca31fc15accd45698155b6a28e6b326c |

The culprit is that antislash "\" that should be used to escape the "(" and
actually end up in the endpoint url.

You should delete the faulty endpoint and add it again like this:

keystone endpoint-create --service-id=*[your-service-id]*
 --publicurl='http://*[controller]*:8004/v1/$(tenant_id)s'
--internalurl='http://*[controller]*:8004/v1/$(tenant_id)s'
--adminurl='http://*[controller]*:8004/v1/$(tenant_id)s'

The current havana documentation is a real massacre.

I found the cisco guide to be relevant:
http://docwiki.cisco.com/wiki/OpenStack_Havana_Release:_High-Availability_Manual_Deployment_Guide#Neutron_Installation

Good luck



*BUSSY Jean-Daniel*
Cloud Engineer | GREE
Mobile: +81 090-3317-1337
Email: silversurfer972 at gmail.com


On Thu, Nov 14, 2013 at 1:21 AM, Therese Persson <
therese.persson at ericsson.com> wrote:

>  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
>
> _______________________________________________
> Mailing list:
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
> Post to     : openstack at lists.openstack.org
> Unsubscribe :
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20131120/54bcc4ec/attachment.html>


More information about the Openstack mailing list