cloudfoundry / stratos

Stratos: Web-based Management UI for Cloud Foundry and Kubernetes
Apache License 2.0
250 stars 132 forks source link

Create and map new route: private domains not available #4769

Open PG2000 opened 4 years ago

PG2000 commented 4 years ago

Stratos Version

4.0.1

Frontend Deployment type

Backend (Jet Stream) Deployment type

Expected behaviour

A private domain can be used for "Create and map new route"

Actual behaviour

A private domain is not available from the ui so that i can't choose the private domain for mapping the route

Steps to reproduce the behavior

Share a private domain with an organization. Then try to create and map a route using the private domain.

Log output covering before error and any error statements

no logs available

richard-cox commented 4 years ago

Hi @PG2000 Thanks for raising this. I've tried to reproduce this locally with no joy. Could I confirm...

1) Where you created the private domain? We don't have domain management in stratos and the cli creates a private domain with an org already assigned (just trying to match your steps exactly) 2) What type of Cloud Foundry are you using (KubeCf, cf-for-k8s, etc)?

PG2000 commented 4 years ago

HEy @richard-cox

to answer your questions:

  1. The domain exists already within our platform for a long time and is mapable over the cli

if i do this:

cf target -o some-org -s some-space

cf domains

`Getting domains in org some-org as xxxx...
name                                          status   type   details
apps.internal                                 shared          internal
dev.example.io            owned`

cf map-route my-app dev.example.io 

then i can map the route.

in Stratos i try to map this route to an app over the ui and didn't see the domain dev.example.io

  1. We're using PCF
richard-cox commented 4 years ago

Which version of the cli are you using?

In my ageing 6.51.0 it looks like the cli makes two requests, v2/shared_domains and /v2/organizations/<org guid>/private_domains rather than directly with v2/spaces/<space guid>/domains.

Could you try the following?

cf curl /v2/spaces/<space guid>/domains

You can find the space guid, after targeting the org, with cf space <space name> -v and look for similar requests

PG2000 commented 4 years ago

I'm using the cf api Version 6.53

yes you're right. He did two requests

If i try:

cf curl /v2/spaces/<space guid>/domains

then it doesn't show the dev.example.io

So isn't it possible to use it with stratos?

richard-cox commented 4 years ago

Unfortunately, at the moment, yes. I've asked the core cf api team what the expected behaviour of that endpoint should be. Depending on the answer this may be an issue you will need to take up with PCF directly.

richard-cox commented 4 years ago

Ok, we think we've worked it out (see https://cloudfoundry.slack.com/archives/C07C04W4Q/p1605173226207800 for details). The domain that's missing in stratos is likely to be a shared private domain, these aren't shown in a number of domain endpoints (see https://github.com/cloudfoundry/cloud_controller_ng/issues/595 for details). I think this is an oversight and seems to be addressed in v3 of the api. We don't currently support this but will do in the future, unfortunately I cannot provide a timeline.

If you'd like to confirm the missing domain is a shared private one you can run the following command

cf curl v2/organizations/<org guid that contains your space>/private_domains

You should see the missing domain there and it will have a different owning_organization_guid to the one in the url

PG2000 commented 4 years ago

thx a lot for figuring this out. @richard-cox

I tried this: cf curl v2/organizations/<org guid that contains your space>/private_domains

and see a different owner org guid