I guess it feels ick to me because we shouldn't have to  save anything, etc.. Its already in the service catalog entry for compute or whatever.   If we get in the business of building up urls from component parts, then you run the very real risk of someone overriding the SC entry, which is supposed to be gospel.   The base url for compute should just be the publicURL from the service catalog... which (I think.. correct me here) is consistent with OS docs.   Now I have to concede that your OS docs references has me thinking....  but my gut reaction at this point is that the OS docs dont make a lot of sense... i.e. why would you list an endpoint as /v2/tenant/flavors when you already know that its V2 (cause its the title of page), the tenant is irrelevant to the operation concerned.  This kind of stuff just confuses people who are new to openstack and adds questionable value.   However that being said, it is in fact listed that way (i would take issue with that formulation, but whatever).   I think rax and hp had it right..... in the last version.  This makes it drop dead simple for people who come after to add new services, 'cause just the logical part is referenced in the request code. ..i.e. "flavors" not <RANDOM_OTHER_STUFF_I_HAVE_TO_UNDERSTAND_TO_WRITE_MY_PROVIDER>/flavors.