On 07/05/2018 01:55 PM, melanie witt wrote:
+openstack-dev@

On Wed, 4 Jul 2018 14:50:26 +0000, Bogdan Katynski wrote:
But, I can not use nova command, endpoint nova have been redirected from https to http. Here:http://prntscr.com/k2e8s6  (command: nova –insecure service list)
First of all, it seems that the nova client is hitting /v2.1 instead of /v2.1/ URI and this seems to be triggering the redirect.

Since openstack CLI works, I presume it must be using the correct URL and hence it’s not getting redirected.

And this is error log: Unable to establish connection tohttp://192.168.30.70:8774/v2.1/: ('Connection aborted.', BadStatusLine("''",))
Looks to me that nova-api does a redirect to an absolute URL. I suspect SSL is terminated on the HAProxy and nova-api itself is configured without SSL so it redirects to an http URL.

In my opinion, nova would be more load-balancer friendly if it used a relative URI in the redirect but that’s outside of the scope of this question and since I don’t know the context behind choosing the absolute URL, I could be wrong on that.

Thanks for mentioning this. We do have a bug open in python-novaclient around a similar issue [1]. I've added comments based on this thread and will consult with the API subteam to see if there's something we can do about this in nova-api.

A similar thing came up the other day related to keystone and version discovery. Version discovery documents tend to return full urls - even though relative urls would make public/internal API endpoints work better. (also, sometimes people don't configure things properly and the version discovery url winds up being incorrect)

In shade/sdk - we actually construct a wholly-new discovery url based on the url used for the catalog and the url in the discovery document since we've learned that the version discovery urls are frequently broken.

This is problematic because SOMETIMES people have public urls deployed as a sub-url and internal urls deployed on a port - so you have:

Catalog:
public: https://example.com/compute
internal: https://compute.example.com:1234

Version discovery:
https://example.com/compute/v2.1

When we go to combine the catalog url and the versioned url, if the user is hitting internal, we product https://compute.example.com:1234/compute/v2.1 - because we have no way of systemically knowing that /compute should also be stripped.

VERY LONG WINDED WAY of saying 2 things:

a) Relative URLs would be *way* friendlier (and incidentally are supported by keystoneauth, openstacksdk and shade - and are written up as being a thing people *should* support in the documents about API consumption)

b) Can we get agreement that changing behavior to return or redirect to a relative URL would not be considered an api contract break? (it's possible the answer to this is 'no' - so it's a real question)

Monty

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to