Merge "Rename endpoint type to interface"
This commit is contained in:
commit
bbe71eb9a3
@ -78,7 +78,7 @@ The keys match the :program:`openstack` global options but without the
|
|||||||
username: openstack
|
username: openstack
|
||||||
password: xyzpdq!lazydog
|
password: xyzpdq!lazydog
|
||||||
region_name: DFW,ORD,IAD
|
region_name: DFW,ORD,IAD
|
||||||
endpoint_type: internal
|
interface: internal
|
||||||
|
|
||||||
In the above example, the ``auth_url`` for the ``rackspace`` cloud is taken
|
In the above example, the ``auth_url`` for the ``rackspace`` cloud is taken
|
||||||
from :file:`clouds-public.yaml` (see below).
|
from :file:`clouds-public.yaml` (see below).
|
||||||
@ -97,7 +97,7 @@ to the following options if the ``rackspace`` entry in :file:`clouds-public.yaml
|
|||||||
--os-username openstack
|
--os-username openstack
|
||||||
--os-password xyzpdq!lazydog
|
--os-password xyzpdq!lazydog
|
||||||
--os-region-name DFW
|
--os-region-name DFW
|
||||||
--os-endpoint-type internal
|
--os-interface internal
|
||||||
|
|
||||||
and can be selected on the command line::
|
and can be selected on the command line::
|
||||||
|
|
||||||
@ -107,9 +107,9 @@ Note that multiple regions are listed in the ``rackspace`` entry. An otherwise
|
|||||||
identical configuration is created for each region. If ``-os-region-name`` is not
|
identical configuration is created for each region. If ``-os-region-name`` is not
|
||||||
specified on the command line, the first region in the list is used by default.
|
specified on the command line, the first region in the list is used by default.
|
||||||
|
|
||||||
The selection of ``endpoint_type`` (as seen above in the ``rackspace`` entry)
|
The selection of ``interface`` (as seen above in the ``rackspace`` entry)
|
||||||
is optional. For this configuration to work, every service for this cloud
|
is optional. For this configuration to work, every service for this cloud
|
||||||
instance must already be configured to support this type of endpoint.
|
instance must already be configured to support this type of interface.
|
||||||
|
|
||||||
clouds-public.yaml
|
clouds-public.yaml
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -67,7 +67,7 @@ OPTIONS
|
|||||||
The authentication plugin type to use when connecting to the Identity service.
|
The authentication plugin type to use when connecting to the Identity service.
|
||||||
If this option is not set, :program:`openstack` will attempt to guess the
|
If this option is not set, :program:`openstack` will attempt to guess the
|
||||||
authentication method to use based on the other options.
|
authentication method to use based on the other options.
|
||||||
If this option is set, its version must match :option:`--os-identity-api-version`
|
If this option is set, its version must match :option:`--os-identity-api-version`
|
||||||
|
|
||||||
:option:`--os-auth-url` <auth-url>
|
:option:`--os-auth-url` <auth-url>
|
||||||
Authentication URL
|
Authentication URL
|
||||||
@ -120,8 +120,8 @@ OPTIONS
|
|||||||
:option:`--os-XXXX-api-version` <XXXX-api-version>
|
:option:`--os-XXXX-api-version` <XXXX-api-version>
|
||||||
Additional API version options will be available depending on the installed API libraries.
|
Additional API version options will be available depending on the installed API libraries.
|
||||||
|
|
||||||
:option:`--os-endpoint-type` <endpoint-type>
|
:option:`--os-interface` <interface>
|
||||||
Endpoint type. Valid options are `public`, `admin` and `internal`.
|
Interface type. Valid options are `public`, `admin` and `internal`.
|
||||||
|
|
||||||
COMMANDS
|
COMMANDS
|
||||||
========
|
========
|
||||||
@ -299,7 +299,7 @@ The following environment variables can be set to alter the behaviour of :progra
|
|||||||
The name of a cloud configuration in ``clouds.yaml``.
|
The name of a cloud configuration in ``clouds.yaml``.
|
||||||
|
|
||||||
:envvar:`OS_AUTH_PLUGIN`
|
:envvar:`OS_AUTH_PLUGIN`
|
||||||
The authentication plugin to use when connecting to the Identity service, its version must match the Identity API version
|
The authentication plugin to use when connecting to the Identity service, its version must match the Identity API version
|
||||||
|
|
||||||
:envvar:`OS_AUTH_URL`
|
:envvar:`OS_AUTH_URL`
|
||||||
Authentication URL
|
Authentication URL
|
||||||
@ -346,8 +346,8 @@ The following environment variables can be set to alter the behaviour of :progra
|
|||||||
:envvar:`OS_XXXX_API_VERSION`
|
:envvar:`OS_XXXX_API_VERSION`
|
||||||
Additional API version options will be available depending on the installed API libraries.
|
Additional API version options will be available depending on the installed API libraries.
|
||||||
|
|
||||||
:envvar:`OS_ENDPOINT_TYPE`
|
:envvar:`OS_INTERFACE`
|
||||||
Endpoint type. Valid options are `public`, `admin` and `internal`.
|
Interface type. Valid options are `public`, `admin` and `internal`.
|
||||||
|
|
||||||
|
|
||||||
BUGS
|
BUGS
|
||||||
|
@ -86,7 +86,7 @@ class ClientManager(object):
|
|||||||
self._pw_callback = pw_func
|
self._pw_callback = pw_func
|
||||||
self._url = self._cli_options.auth.get('url', None)
|
self._url = self._cli_options.auth.get('url', None)
|
||||||
self._region_name = self._cli_options.region_name
|
self._region_name = self._cli_options.region_name
|
||||||
self._endpoint_type = self._cli_options.endpoint_type
|
self._interface = self._cli_options.interface
|
||||||
|
|
||||||
self.timing = self._cli_options.timing
|
self.timing = self._cli_options.timing
|
||||||
|
|
||||||
@ -185,22 +185,22 @@ class ClientManager(object):
|
|||||||
return self._auth_ref
|
return self._auth_ref
|
||||||
|
|
||||||
def get_endpoint_for_service_type(self, service_type, region_name=None,
|
def get_endpoint_for_service_type(self, service_type, region_name=None,
|
||||||
endpoint_type='public'):
|
interface='public'):
|
||||||
"""Return the endpoint URL for the service type."""
|
"""Return the endpoint URL for the service type."""
|
||||||
if not endpoint_type:
|
if not interface:
|
||||||
endpoint_type = 'public'
|
interface = 'public'
|
||||||
# See if we are using password flow auth, i.e. we have a
|
# See if we are using password flow auth, i.e. we have a
|
||||||
# service catalog to select endpoints from
|
# service catalog to select endpoints from
|
||||||
if self.auth_ref:
|
if self.auth_ref:
|
||||||
endpoint = self.auth_ref.service_catalog.url_for(
|
endpoint = self.auth_ref.service_catalog.url_for(
|
||||||
service_type=service_type,
|
service_type=service_type,
|
||||||
region_name=region_name,
|
region_name=region_name,
|
||||||
endpoint_type=endpoint_type,
|
endpoint_type=interface,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# Get the passed endpoint directly from the auth plugin
|
# Get the passed endpoint directly from the auth plugin
|
||||||
endpoint = self.auth.get_endpoint(self.session,
|
endpoint = self.auth.get_endpoint(self.session,
|
||||||
interface=endpoint_type)
|
interface=interface)
|
||||||
return endpoint
|
return endpoint
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,9 +48,8 @@ def make_client(instance):
|
|||||||
|
|
||||||
extensions = [extension.Extension('list_extensions', list_extensions)]
|
extensions = [extension.Extension('list_extensions', list_extensions)]
|
||||||
|
|
||||||
# Remember endpoint_type only if it is set
|
# Remember interface only if it is set
|
||||||
kwargs = utils.build_kwargs_dict('endpoint_type',
|
kwargs = utils.build_kwargs_dict('endpoint_type', instance._interface)
|
||||||
instance._endpoint_type)
|
|
||||||
|
|
||||||
client = compute_client(
|
client = compute_client(
|
||||||
session=instance.session,
|
session=instance.session,
|
||||||
|
@ -46,9 +46,8 @@ def make_client(instance):
|
|||||||
API_VERSIONS)
|
API_VERSIONS)
|
||||||
LOG.debug('Instantiating identity client: %s', identity_client)
|
LOG.debug('Instantiating identity client: %s', identity_client)
|
||||||
|
|
||||||
# Remember interface only if endpoint_type is set
|
# Remember interface only if interface is set
|
||||||
kwargs = utils.build_kwargs_dict('interface',
|
kwargs = utils.build_kwargs_dict('interface', instance._interface)
|
||||||
instance._endpoint_type)
|
|
||||||
|
|
||||||
client = identity_client(
|
client = identity_client(
|
||||||
session=instance.session,
|
session=instance.session,
|
||||||
|
@ -46,7 +46,7 @@ def make_client(instance):
|
|||||||
endpoint = instance.get_endpoint_for_service_type(
|
endpoint = instance.get_endpoint_for_service_type(
|
||||||
API_NAME,
|
API_NAME,
|
||||||
region_name=instance._region_name,
|
region_name=instance._region_name,
|
||||||
endpoint_type=instance._endpoint_type,
|
interface=instance._interface,
|
||||||
)
|
)
|
||||||
|
|
||||||
client = image_client(
|
client = image_client(
|
||||||
@ -69,7 +69,7 @@ def make_client(instance):
|
|||||||
endpoint=instance.get_endpoint_for_service_type(
|
endpoint=instance.get_endpoint_for_service_type(
|
||||||
IMAGE_API_TYPE,
|
IMAGE_API_TYPE,
|
||||||
region_name=instance._region_name,
|
region_name=instance._region_name,
|
||||||
endpoint_type=instance._endpoint_type,
|
interface=instance._interface,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -47,12 +47,11 @@ def make_client(instance):
|
|||||||
endpoint = instance.get_endpoint_for_service_type(
|
endpoint = instance.get_endpoint_for_service_type(
|
||||||
API_NAME,
|
API_NAME,
|
||||||
region_name=instance._region_name,
|
region_name=instance._region_name,
|
||||||
endpoint_type=instance._endpoint_type,
|
interface=instance._interface,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Remember endpoint_type only if it is set
|
# Remember endpoint_type only if it is set
|
||||||
kwargs = utils.build_kwargs_dict('endpoint_type',
|
kwargs = utils.build_kwargs_dict('endpoint_type', instance._interface)
|
||||||
instance._endpoint_type)
|
|
||||||
|
|
||||||
client = network_client(
|
client = network_client(
|
||||||
session=instance.session,
|
session=instance.session,
|
||||||
|
@ -36,7 +36,7 @@ def make_client(instance):
|
|||||||
endpoint = instance.get_endpoint_for_service_type(
|
endpoint = instance.get_endpoint_for_service_type(
|
||||||
'object-store',
|
'object-store',
|
||||||
region_name=instance._region_name,
|
region_name=instance._region_name,
|
||||||
endpoint_type=instance._endpoint_type,
|
interface=instance._interface,
|
||||||
)
|
)
|
||||||
|
|
||||||
client = object_store_v1.APIv1(
|
client = object_store_v1.APIv1(
|
||||||
|
@ -209,14 +209,14 @@ class OpenStackShell(app.App):
|
|||||||
DEFAULT_DOMAIN +
|
DEFAULT_DOMAIN +
|
||||||
' (Env: OS_DEFAULT_DOMAIN)')
|
' (Env: OS_DEFAULT_DOMAIN)')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--os-endpoint-type',
|
'--os-interface',
|
||||||
metavar='<endpoint-type>',
|
metavar='<interface>',
|
||||||
dest='endpoint_type',
|
dest='interface',
|
||||||
choices=['admin', 'public', 'internal'],
|
choices=['admin', 'public', 'internal'],
|
||||||
default=utils.env('OS_ENDPOINT_TYPE'),
|
default=utils.env('OS_INTERFACE'),
|
||||||
help='Select an endpoint type.'
|
help='Select an interface type.'
|
||||||
' Valid endpoint types: [admin, public, internal].'
|
' Valid interface types: [admin, public, internal].'
|
||||||
' (Env: OS_ENDPOINT_TYPE)')
|
' (Env: OS_INTERFACE)')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--timing',
|
'--timing',
|
||||||
default=False,
|
default=False,
|
||||||
@ -263,10 +263,10 @@ class OpenStackShell(app.App):
|
|||||||
self.options.project_name = tenant_name
|
self.options.project_name = tenant_name
|
||||||
|
|
||||||
# Do configuration file handling
|
# Do configuration file handling
|
||||||
# Ignore the default value of endpoint_type. Only if it is set later
|
# Ignore the default value of interface. Only if it is set later
|
||||||
# will it be used.
|
# will it be used.
|
||||||
cc = cloud_config.OpenStackConfig(
|
cc = cloud_config.OpenStackConfig(
|
||||||
override_defaults={'endpoint_type': None, })
|
override_defaults={'interface': None, })
|
||||||
self.log.debug("defaults: %s", cc.defaults)
|
self.log.debug("defaults: %s", cc.defaults)
|
||||||
|
|
||||||
self.cloud = cc.get_one_cloud(
|
self.cloud = cc.get_one_cloud(
|
||||||
|
@ -54,7 +54,7 @@ class FakeOptions(object):
|
|||||||
self.identity_api_version = '2.0'
|
self.identity_api_version = '2.0'
|
||||||
self.timing = None
|
self.timing = None
|
||||||
self.region_name = None
|
self.region_name = None
|
||||||
self.endpoint_type = None
|
self.interface = None
|
||||||
self.url = None
|
self.url = None
|
||||||
self.auth = {}
|
self.auth = {}
|
||||||
self.default_domain = 'default'
|
self.default_domain = 'default'
|
||||||
@ -124,7 +124,7 @@ class TestClientManager(utils.TestCase):
|
|||||||
auth_url=fakes.AUTH_URL,
|
auth_url=fakes.AUTH_URL,
|
||||||
),
|
),
|
||||||
auth_type='v2token',
|
auth_type='v2token',
|
||||||
endpoint_type=fakes.ENDPOINT_TYPE,
|
interface=fakes.INTERFACE,
|
||||||
region_name=fakes.REGION_NAME,
|
region_name=fakes.REGION_NAME,
|
||||||
),
|
),
|
||||||
api_version=API_VERSION,
|
api_version=API_VERSION,
|
||||||
@ -141,8 +141,8 @@ class TestClientManager(utils.TestCase):
|
|||||||
auth_v2.Token,
|
auth_v2.Token,
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
fakes.ENDPOINT_TYPE,
|
fakes.INTERFACE,
|
||||||
client_manager._endpoint_type,
|
client_manager._interface,
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
fakes.REGION_NAME,
|
fakes.REGION_NAME,
|
||||||
|
@ -27,7 +27,7 @@ USERNAME = "itchy"
|
|||||||
PASSWORD = "scratchy"
|
PASSWORD = "scratchy"
|
||||||
PROJECT_NAME = "poochie"
|
PROJECT_NAME = "poochie"
|
||||||
REGION_NAME = "richie"
|
REGION_NAME = "richie"
|
||||||
ENDPOINT_TYPE = "catchy"
|
INTERFACE = "catchy"
|
||||||
|
|
||||||
TEST_RESPONSE_DICT = fixture.V2Token(token_id=AUTH_TOKEN,
|
TEST_RESPONSE_DICT = fixture.V2Token(token_id=AUTH_TOKEN,
|
||||||
user_name=USERNAME)
|
user_name=USERNAME)
|
||||||
|
@ -39,7 +39,7 @@ DEFAULT_REGION_NAME = "ZZ9_Plural_Z_Alpha"
|
|||||||
DEFAULT_TOKEN = "token"
|
DEFAULT_TOKEN = "token"
|
||||||
DEFAULT_SERVICE_URL = "http://127.0.0.1:8771/v3.0/"
|
DEFAULT_SERVICE_URL = "http://127.0.0.1:8771/v3.0/"
|
||||||
DEFAULT_AUTH_PLUGIN = "v2password"
|
DEFAULT_AUTH_PLUGIN = "v2password"
|
||||||
DEFAULT_ENDPOINT_TYPE = "internal"
|
DEFAULT_INTERFACE = "internal"
|
||||||
|
|
||||||
DEFAULT_COMPUTE_API_VERSION = "2"
|
DEFAULT_COMPUTE_API_VERSION = "2"
|
||||||
DEFAULT_IDENTITY_API_VERSION = "2"
|
DEFAULT_IDENTITY_API_VERSION = "2"
|
||||||
@ -63,7 +63,7 @@ CLOUD_1 = {
|
|||||||
},
|
},
|
||||||
'region_name': 'occ-cloud',
|
'region_name': 'occ-cloud',
|
||||||
'donut': 'glazed',
|
'donut': 'glazed',
|
||||||
'endpoint_type': 'public',
|
'interface': 'public',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -107,7 +107,7 @@ global_options = {
|
|||||||
'--os-default-domain': (DEFAULT_DOMAIN_NAME, True, True),
|
'--os-default-domain': (DEFAULT_DOMAIN_NAME, True, True),
|
||||||
'--os-cacert': ('/dev/null', True, True),
|
'--os-cacert': ('/dev/null', True, True),
|
||||||
'--timing': (True, True, False),
|
'--timing': (True, True, False),
|
||||||
'--os-endpoint-type': (DEFAULT_ENDPOINT_TYPE, True, True)
|
'--os-interface': (DEFAULT_INTERFACE, True, True)
|
||||||
}
|
}
|
||||||
|
|
||||||
auth_options = {
|
auth_options = {
|
||||||
@ -127,7 +127,7 @@ auth_options = {
|
|||||||
'--os-auth-type': ("v2password", True, True),
|
'--os-auth-type': ("v2password", True, True),
|
||||||
'--os-token': (DEFAULT_TOKEN, True, True),
|
'--os-token': (DEFAULT_TOKEN, True, True),
|
||||||
'--os-url': (DEFAULT_SERVICE_URL, True, True),
|
'--os-url': (DEFAULT_SERVICE_URL, True, True),
|
||||||
'--os-endpoint-type': (DEFAULT_ENDPOINT_TYPE, True, True),
|
'--os-interface': (DEFAULT_INTERFACE, True, True),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -616,7 +616,7 @@ class TestShellCli(TestShell):
|
|||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
'public',
|
'public',
|
||||||
_shell.cloud.config['endpoint_type'],
|
_shell.cloud.config['interface'],
|
||||||
)
|
)
|
||||||
|
|
||||||
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
|
@mock.patch("os_client_config.config.OpenStackConfig._load_vendor_file")
|
||||||
|
@ -53,9 +53,8 @@ def make_client(instance):
|
|||||||
|
|
||||||
extensions = [extension.Extension('list_extensions', list_extensions)]
|
extensions = [extension.Extension('list_extensions', list_extensions)]
|
||||||
|
|
||||||
# Remember endpoint_type only if it is set
|
# Remember interface only if it is set
|
||||||
kwargs = utils.build_kwargs_dict('endpoint_type',
|
kwargs = utils.build_kwargs_dict('endpoint_type', instance._interface)
|
||||||
instance._endpoint_type)
|
|
||||||
|
|
||||||
client = volume_client(
|
client = volume_client(
|
||||||
session=instance.session,
|
session=instance.session,
|
||||||
|
Loading…
Reference in New Issue
Block a user