Change visibility to interface
Change-Id: I984dc2e9ae362c5d9dcf6bc9ef9f9d5e3b356679 Closes-Bug: #1479421
This commit is contained in:
parent
c725e6eae7
commit
594f2479ca
|
@ -139,8 +139,8 @@ class ProfileAction(argparse.Action):
|
||||||
cls.prof.set_region(service, value)
|
cls.prof.set_region(service, value)
|
||||||
elif var == 'version':
|
elif var == 'version':
|
||||||
cls.prof.set_version(service, value)
|
cls.prof.set_version(service, value)
|
||||||
elif var == 'visibility':
|
elif var == 'interface':
|
||||||
cls.prof.set_visibility(service, value)
|
cls.prof.set_interface(service, value)
|
||||||
|
|
||||||
def __call__(self, parser, namespace, values, option_string=None):
|
def __call__(self, parser, namespace, values, option_string=None):
|
||||||
if getattr(namespace, self.dest, None) is None:
|
if getattr(namespace, self.dest, None) is None:
|
||||||
|
@ -283,12 +283,12 @@ def option_parser():
|
||||||
help='Desired API versions defaults to env[OS_API_VERSION]',
|
help='Desired API versions defaults to env[OS_API_VERSION]',
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--os-api-visibility',
|
'--os-api-interface',
|
||||||
dest='preferences',
|
dest='preferences',
|
||||||
metavar='<service>=<visibility>',
|
metavar='<service>=<interface>',
|
||||||
action=ProfileAction,
|
action=ProfileAction,
|
||||||
default=ProfileAction.env('OS_API_VISIBILITY'),
|
default=ProfileAction.env('OS_INTERFACE'),
|
||||||
help='Desired API visibility defaults to env[OS_API_VISIBILITY]',
|
help='Desired API interface defaults to env[OS_INTERFACE]',
|
||||||
)
|
)
|
||||||
verify_group = parser.add_mutually_exclusive_group()
|
verify_group = parser.add_mutually_exclusive_group()
|
||||||
verify_group.add_argument(
|
verify_group.add_argument(
|
||||||
|
|
|
@ -66,7 +66,7 @@ class ServiceCatalog(object):
|
||||||
|
|
||||||
Returns a tuple containting the url and version for the specified
|
Returns a tuple containting the url and version for the specified
|
||||||
service (or all) containing the specified type, name, region and
|
service (or all) containing the specified type, name, region and
|
||||||
visibility.
|
interface.
|
||||||
"""
|
"""
|
||||||
eps = []
|
eps = []
|
||||||
for service in self.catalog:
|
for service in self.catalog:
|
||||||
|
@ -77,7 +77,7 @@ class ServiceCatalog(object):
|
||||||
for endpoint in service.get('endpoints', []):
|
for endpoint in service.get('endpoints', []):
|
||||||
if not filtration.match_region(endpoint.get('region', None)):
|
if not filtration.match_region(endpoint.get('region', None)):
|
||||||
continue
|
continue
|
||||||
if not filtration.match_visibility(endpoint.get('interface')):
|
if not filtration.match_interface(endpoint.get('interface')):
|
||||||
continue
|
continue
|
||||||
url = endpoint.get('url', None)
|
url = endpoint.get('url', None)
|
||||||
if not url:
|
if not url:
|
||||||
|
@ -91,7 +91,7 @@ class ServiceCatalog(object):
|
||||||
|
|
||||||
Returns a list of urls based on the service filter. If not endpoints
|
Returns a list of urls based on the service filter. If not endpoints
|
||||||
are found that match the service filter, an empty list is returned.
|
are found that match the service filter, an empty list is returned.
|
||||||
The filter may specify type, name, region, version and visibility.
|
The filter may specify type, name, region, version and interface.
|
||||||
"""
|
"""
|
||||||
urls = []
|
urls = []
|
||||||
for url, version in self._get_endpoints(filtration):
|
for url, version in self._get_endpoints(filtration):
|
||||||
|
@ -107,7 +107,7 @@ class ServiceCatalog(object):
|
||||||
no endpoint matching the filter, None will be returned. An empty
|
no endpoint matching the filter, None will be returned. An empty
|
||||||
list of versions means the service is supported, but no version is
|
list of versions means the service is supported, but no version is
|
||||||
specified in the service catalog. The filter may specify type, name,
|
specified in the service catalog. The filter may specify type, name,
|
||||||
region, version and visibility.
|
region, version and interface.
|
||||||
"""
|
"""
|
||||||
vers = None
|
vers = None
|
||||||
for url, version in self._get_endpoints(filtration):
|
for url, version in self._get_endpoints(filtration):
|
||||||
|
|
|
@ -25,7 +25,7 @@ Examples
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The :class:`~openstack.auth.service_filter.ServiceFilter` class can be built
|
The :class:`~openstack.auth.service_filter.ServiceFilter` class can be built
|
||||||
with a service type, visibility, region, name, and version.
|
with a service type, interface, region, name, and version.
|
||||||
|
|
||||||
Create a service filter
|
Create a service filter
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -41,13 +41,13 @@ and match::
|
||||||
matches = (result.match_service_type('compute') and
|
matches = (result.match_service_type('compute') and
|
||||||
result.match_service_name('Hal9000') and
|
result.match_service_name('Hal9000') and
|
||||||
result.match_region('DiscoveryOne') and
|
result.match_region('DiscoveryOne') and
|
||||||
result.match_visibility('public'))
|
result.match_interface('public'))
|
||||||
print(str(result))
|
print(str(result))
|
||||||
print("matches=" + str(matches))
|
print("matches=" + str(matches))
|
||||||
|
|
||||||
The resulting output from the code::
|
The resulting output from the code::
|
||||||
|
|
||||||
service_type=compute,visibility=public,version=v2
|
service_type=compute,interface=public,version=v2
|
||||||
matches=True
|
matches=True
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -72,30 +72,30 @@ class ServiceFilter(object):
|
||||||
PUBLIC = 'public'
|
PUBLIC = 'public'
|
||||||
INTERNAL = 'internal'
|
INTERNAL = 'internal'
|
||||||
ADMIN = 'admin'
|
ADMIN = 'admin'
|
||||||
VISIBILITY = [PUBLIC, INTERNAL, ADMIN]
|
INTERFACE = [PUBLIC, INTERNAL, ADMIN]
|
||||||
valid_versions = []
|
valid_versions = []
|
||||||
|
|
||||||
def __init__(self, service_type=ANY, visibility=PUBLIC, region=None,
|
def __init__(self, service_type=ANY, interface=PUBLIC, region=None,
|
||||||
service_name=None, version=None):
|
service_name=None, version=None):
|
||||||
"""Create a service identifier.
|
"""Create a service identifier.
|
||||||
|
|
||||||
:param string service_type: The desired type of service.
|
:param string service_type: The desired type of service.
|
||||||
:param string visibility: The exposure of the endpoint. Should be
|
:param string interface: The exposure of the endpoint. Should be
|
||||||
`public` (default), `internal` or `admin`.
|
`public` (default), `internal` or `admin`.
|
||||||
:param string region: The desired region (optional).
|
:param string region: The desired region (optional).
|
||||||
:param string service_name: Name of the service
|
:param string service_name: Name of the service
|
||||||
:param string version: Version of service to use.
|
:param string version: Version of service to use.
|
||||||
"""
|
"""
|
||||||
self.service_type = service_type.lower()
|
self.service_type = service_type.lower()
|
||||||
self.set_visibility(visibility)
|
self.set_interface(interface)
|
||||||
self.region = region
|
self.region = region
|
||||||
self.service_name = service_name
|
self.service_name = service_name
|
||||||
self.version = version
|
self.version = version
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
ret = "service_type=%s" % self.service_type
|
ret = "service_type=%s" % self.service_type
|
||||||
if self.visibility is not None:
|
if self.interface is not None:
|
||||||
ret += ",visibility=%s" % self.visibility
|
ret += ",interface=%s" % self.interface
|
||||||
if self.region is not None:
|
if self.region is not None:
|
||||||
ret += ",region=%s" % self.region
|
ret += ",region=%s" % self.region
|
||||||
if self.service_name:
|
if self.service_name:
|
||||||
|
@ -121,9 +121,9 @@ class ServiceFilter(object):
|
||||||
response.service_type = default.service_type
|
response.service_type = default.service_type
|
||||||
response.service_name = self.service_name
|
response.service_name = self.service_name
|
||||||
response.valid_versions = default.valid_versions
|
response.valid_versions = default.valid_versions
|
||||||
response.visibility = default.visibility
|
response.interface = default.interface
|
||||||
if self.visibility:
|
if self.interface:
|
||||||
response.visibility = self.visibility
|
response.interface = self.interface
|
||||||
if self.region:
|
if self.region:
|
||||||
response.region = self.region
|
response.region = self.region
|
||||||
response.version = version
|
response.version = version
|
||||||
|
@ -151,23 +151,23 @@ class ServiceFilter(object):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def match_visibility(self, visibility):
|
def match_interface(self, interface):
|
||||||
"""Service visibilities are equavilent."""
|
"""Service interfaces are equavilent."""
|
||||||
if not self.visibility:
|
if not self.interface:
|
||||||
return True
|
return True
|
||||||
return self.visibility == visibility
|
return self.interface == interface
|
||||||
|
|
||||||
def set_visibility(self, visibility):
|
def set_interface(self, interface):
|
||||||
"""Set the visibility of the service filter."""
|
"""Set the interface of the service filter."""
|
||||||
if not visibility:
|
if not interface:
|
||||||
self.visibility = None
|
self.interface = None
|
||||||
return
|
return
|
||||||
visibility = visibility.replace('URL', '')
|
interface = interface.replace('URL', '')
|
||||||
visibility = visibility.lower()
|
interface = interface.lower()
|
||||||
if visibility not in self.VISIBILITY:
|
if interface not in self.INTERFACE:
|
||||||
msg = "Visibility <%s> not in %s" % (visibility, self.VISIBILITY)
|
msg = "Interface <%s> not in %s" % (interface, self.INTERFACE)
|
||||||
raise exceptions.SDKException(msg)
|
raise exceptions.SDKException(msg)
|
||||||
self.visibility = visibility
|
self.interface = interface
|
||||||
|
|
||||||
def _get_valid_version(self):
|
def _get_valid_version(self):
|
||||||
if self.valid_versions:
|
if self.valid_versions:
|
||||||
|
|
|
@ -111,7 +111,7 @@ def from_config(opts):
|
||||||
version = "v" + version
|
version = "v" + version
|
||||||
prof.set_version(service, version)
|
prof.set_version(service, version)
|
||||||
prof.set_name(service, cloud_config.get_service_name(service))
|
prof.set_name(service, cloud_config.get_service_name(service))
|
||||||
prof.set_visibility(
|
prof.set_interface(
|
||||||
service, cloud_config.get_interface(service))
|
service, cloud_config.get_interface(service))
|
||||||
prof.set_region(service, cloud_config.get_region_name(service))
|
prof.set_region(service, cloud_config.get_region_name(service))
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ class Connection(object):
|
||||||
authenticator.
|
authenticator.
|
||||||
:type authenticator: :class:`~openstack.auth.base.BaseAuthPlugin`
|
:type authenticator: :class:`~openstack.auth.base.BaseAuthPlugin`
|
||||||
:param profile: If the user has any special profiles such as the
|
:param profile: If the user has any special profiles such as the
|
||||||
service name, region, version or visibility, they may be provided
|
service name, region, version or interface, they may be provided
|
||||||
in the profile object. If no profiles are provided, the
|
in the profile object. If no profiles are provided, the
|
||||||
services that appear first in the service catalog will be used.
|
services that appear first in the service catalog will be used.
|
||||||
:type profile: :class:`~openstack.profile.Profile`
|
:type profile: :class:`~openstack.profile.Profile`
|
||||||
|
|
|
@ -30,5 +30,5 @@ class IdentityService(service_filter.ServiceFilter):
|
||||||
class AdminService(IdentityService):
|
class AdminService(IdentityService):
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
kwargs['visibility'] = service_filter.ServiceFilter.ADMIN
|
kwargs['interface'] = service_filter.ServiceFilter.ADMIN
|
||||||
super(AdminService, self).__init__(**kwargs)
|
super(AdminService, self).__init__(**kwargs)
|
||||||
|
|
|
@ -32,7 +32,7 @@ class Endpoint(resource.Resource):
|
||||||
#: Setting this value to ``False`` prevents the endpoint from appearing
|
#: Setting this value to ``False`` prevents the endpoint from appearing
|
||||||
#: in the service catalog. *Type: bool*
|
#: in the service catalog. *Type: bool*
|
||||||
enabled = resource.prop('enabled', type=bool)
|
enabled = resource.prop('enabled', type=bool)
|
||||||
#: Describes the visibility of the endpoint according to one of the
|
#: Describes the interface of the endpoint according to one of the
|
||||||
#: following values:
|
#: following values:
|
||||||
#:
|
#:
|
||||||
#: - `public`: intended for consumption by end users, generally on a
|
#: - `public`: intended for consumption by end users, generally on a
|
||||||
|
|
|
@ -26,7 +26,7 @@ def load_service_extensions(namespace):
|
||||||
services = {}
|
services = {}
|
||||||
for service in service_extensions:
|
for service in service_extensions:
|
||||||
service = service.obj
|
service = service.obj
|
||||||
service.set_visibility(None)
|
service.set_interface(None)
|
||||||
services[service.service_type] = service
|
services[service.service_type] = service
|
||||||
return services
|
return services
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
"""
|
"""
|
||||||
:class:`~openstack.profile.Profile` is the class that is used to
|
:class:`~openstack.profile.Profile` is the class that is used to
|
||||||
define the various preferences for different services. The preferences that
|
define the various preferences for different services. The preferences that
|
||||||
are currently supported are service name, region, version and visibility.
|
are currently supported are service name, region, version and interface.
|
||||||
The :class:`~openstack.profile.Profile` and the
|
The :class:`~openstack.profile.Profile` and the
|
||||||
:class:`~openstack.connection.Connection` classes are the most important
|
:class:`~openstack.connection.Connection` classes are the most important
|
||||||
user facing classes.
|
user facing classes.
|
||||||
|
@ -35,7 +35,7 @@ normally be something like 'compute', 'identity', 'object-store', etc.::
|
||||||
prof.set_name('compute', 'matrix')
|
prof.set_name('compute', 'matrix')
|
||||||
prof.set_region(prof.ALL, 'zion')
|
prof.set_region(prof.ALL, 'zion')
|
||||||
prof.set_version('identity', 'v3')
|
prof.set_version('identity', 'v3')
|
||||||
prof.set_visibility('object-store', 'internal')
|
prof.set_interface('object-store', 'internal')
|
||||||
for service in prof.get_services():
|
for service in prof.get_services():
|
||||||
print str(prof.get_preference(service.service_type))
|
print str(prof.get_preference(service.service_type))
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ The resulting preference print out would look something like::
|
||||||
service_type=image,region=zion
|
service_type=image,region=zion
|
||||||
service_type=metering,region=zion
|
service_type=metering,region=zion
|
||||||
service_type=orchestration,region=zion
|
service_type=orchestration,region=zion
|
||||||
service_type=object-store,visibility=internal,region=zion
|
service_type=object-store,interface=internal,region=zion
|
||||||
service_type=identity,region=zion,version=v3
|
service_type=identity,region=zion,version=v3
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ class Profile(object):
|
||||||
return repr(self._preferences)
|
return repr(self._preferences)
|
||||||
|
|
||||||
def _add_service(self, serv):
|
def _add_service(self, serv):
|
||||||
serv.set_visibility(None)
|
serv.set_interface(None)
|
||||||
self._services[serv.service_type] = serv
|
self._services[serv.service_type] = serv
|
||||||
|
|
||||||
def _load_extension(self, namespace):
|
def _load_extension(self, namespace):
|
||||||
|
@ -186,15 +186,15 @@ class Profile(object):
|
||||||
"""
|
"""
|
||||||
self._get_service(service).version = version
|
self._get_service(service).version = version
|
||||||
|
|
||||||
def set_visibility(self, service, visibility):
|
def set_interface(self, service, interface):
|
||||||
"""Set the desired visibility for the specified service.
|
"""Set the desired interface for the specified service.
|
||||||
|
|
||||||
:param str service: Service type.
|
:param str service: Service type.
|
||||||
:param str visibility: Desired service visibility.
|
:param str interface: Desired service interface.
|
||||||
"""
|
"""
|
||||||
if service == self.ALL:
|
if service == self.ALL:
|
||||||
services = self.service_names
|
services = self.service_names
|
||||||
else:
|
else:
|
||||||
services = [service]
|
services = [service]
|
||||||
for service in services:
|
for service in services:
|
||||||
self._get_service(service).set_visibility(visibility)
|
self._get_service(service).set_interface(interface)
|
||||||
|
|
|
@ -81,7 +81,7 @@ class Session(object):
|
||||||
get_endpoint methods for the session.
|
get_endpoint methods for the session.
|
||||||
:type authenticator: :class:`~openstack.auth.base.BaseAuthPlugin`
|
:type authenticator: :class:`~openstack.auth.base.BaseAuthPlugin`
|
||||||
:param profile: If the user has any special profiles such as the
|
:param profile: If the user has any special profiles such as the
|
||||||
service name, region, version or visibility, they may be provided
|
service name, region, version or interface, they may be provided
|
||||||
in the profile object. If no profiles are provided, the
|
in the profile object. If no profiles are provided, the
|
||||||
services that appear first in the service catalog will be used.
|
services that appear first in the service catalog will be used.
|
||||||
:type profile: :class:`~openstack.profile.Profile`
|
:type profile: :class:`~openstack.profile.Profile`
|
||||||
|
|
|
@ -69,19 +69,19 @@ class TestServiceCatalog(testtools.TestCase):
|
||||||
self.assertEqual(["http://compute.region1.public/v2.0"],
|
self.assertEqual(["http://compute.region1.public/v2.0"],
|
||||||
sot.get_urls(sf))
|
sot.get_urls(sf))
|
||||||
|
|
||||||
def get_urls_visibility(self, sot):
|
def get_urls_interface(self, sot):
|
||||||
sf = service_filter.ServiceFilter(service_type='identity',
|
sf = service_filter.ServiceFilter(service_type='identity',
|
||||||
visibility='admin')
|
interface='admin')
|
||||||
self.assertEqual(["http://identity.region1.admin/v1.1/123123"],
|
self.assertEqual(["http://identity.region1.admin/v1.1/123123"],
|
||||||
sot.get_urls(sf))
|
sot.get_urls(sf))
|
||||||
sf = service_filter.ServiceFilter(service_type='identity',
|
sf = service_filter.ServiceFilter(service_type='identity',
|
||||||
visibility='internal')
|
interface='internal')
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
["http://identity.region1.internal/v1.1/123123"],
|
["http://identity.region1.internal/v1.1/123123"],
|
||||||
sot.get_urls(sf)
|
sot.get_urls(sf)
|
||||||
)
|
)
|
||||||
sf = service_filter.ServiceFilter(service_type='identity',
|
sf = service_filter.ServiceFilter(service_type='identity',
|
||||||
visibility='public')
|
interface='public')
|
||||||
self.assertEqual(["http://identity.region1.public/v1.1/123123"],
|
self.assertEqual(["http://identity.region1.public/v1.1/123123"],
|
||||||
sot.get_urls(sf))
|
sot.get_urls(sf))
|
||||||
|
|
||||||
|
@ -107,9 +107,9 @@ class TestServiceCatalogV2(TestServiceCatalog):
|
||||||
sot = catalog.ServiceCatalogV2(common.TEST_SERVICE_CATALOG_V2)
|
sot = catalog.ServiceCatalogV2(common.TEST_SERVICE_CATALOG_V2)
|
||||||
self.get_urls_region(sot)
|
self.get_urls_region(sot)
|
||||||
|
|
||||||
def test_get_urls_visibility(self):
|
def test_get_urls_interface(self):
|
||||||
sot = catalog.ServiceCatalogV2(common.TEST_SERVICE_CATALOG_V2)
|
sot = catalog.ServiceCatalogV2(common.TEST_SERVICE_CATALOG_V2)
|
||||||
self.get_urls_visibility(sot)
|
self.get_urls_interface(sot)
|
||||||
|
|
||||||
|
|
||||||
class TestServiceCatalogV3(TestServiceCatalog):
|
class TestServiceCatalogV3(TestServiceCatalog):
|
||||||
|
@ -133,9 +133,9 @@ class TestServiceCatalogV3(TestServiceCatalog):
|
||||||
sot = catalog.ServiceCatalog(common.TEST_SERVICE_CATALOG_V3)
|
sot = catalog.ServiceCatalog(common.TEST_SERVICE_CATALOG_V3)
|
||||||
self.get_urls_region(sot)
|
self.get_urls_region(sot)
|
||||||
|
|
||||||
def test_get_urls_visibility(self):
|
def test_get_urls_interface(self):
|
||||||
sot = catalog.ServiceCatalog(common.TEST_SERVICE_CATALOG_V3)
|
sot = catalog.ServiceCatalog(common.TEST_SERVICE_CATALOG_V3)
|
||||||
self.get_urls_visibility(sot)
|
self.get_urls_interface(sot)
|
||||||
|
|
||||||
def test_get_versions(self):
|
def test_get_versions(self):
|
||||||
sot = catalog.ServiceCatalog(common.TEST_SERVICE_CATALOG_V3)
|
sot = catalog.ServiceCatalog(common.TEST_SERVICE_CATALOG_V3)
|
||||||
|
|
|
@ -21,41 +21,41 @@ from openstack.identity import identity_service
|
||||||
class TestServiceFilter(testtools.TestCase):
|
class TestServiceFilter(testtools.TestCase):
|
||||||
def test_minimum(self):
|
def test_minimum(self):
|
||||||
sot = filt.ServiceFilter()
|
sot = filt.ServiceFilter()
|
||||||
self.assertEqual("service_type=any,visibility=public",
|
self.assertEqual("service_type=any,interface=public",
|
||||||
six.text_type(sot))
|
six.text_type(sot))
|
||||||
|
|
||||||
def test_maximum(self):
|
def test_maximum(self):
|
||||||
sot = filt.ServiceFilter(service_type='compute', visibility='admin',
|
sot = filt.ServiceFilter(service_type='compute', interface='admin',
|
||||||
region='b', service_name='c')
|
region='b', service_name='c')
|
||||||
exp = "service_type=compute,visibility=admin,region=b,service_name=c"
|
exp = "service_type=compute,interface=admin,region=b,service_name=c"
|
||||||
self.assertEqual(exp, six.text_type(sot))
|
self.assertEqual(exp, six.text_type(sot))
|
||||||
|
|
||||||
def test_visibility(self):
|
def test_interface(self):
|
||||||
sot = filt.ServiceFilter(service_type='identity', visibility='public')
|
sot = filt.ServiceFilter(service_type='identity', interface='public')
|
||||||
self.assertEqual("service_type=identity,visibility=public",
|
self.assertEqual("service_type=identity,interface=public",
|
||||||
six.text_type(sot))
|
six.text_type(sot))
|
||||||
sot = filt.ServiceFilter(service_type='identity',
|
sot = filt.ServiceFilter(service_type='identity',
|
||||||
visibility='internal')
|
interface='internal')
|
||||||
self.assertEqual("service_type=identity,visibility=internal",
|
self.assertEqual("service_type=identity,interface=internal",
|
||||||
six.text_type(sot))
|
six.text_type(sot))
|
||||||
sot = filt.ServiceFilter(service_type='identity', visibility='admin')
|
sot = filt.ServiceFilter(service_type='identity', interface='admin')
|
||||||
self.assertEqual("service_type=identity,visibility=admin",
|
self.assertEqual("service_type=identity,interface=admin",
|
||||||
six.text_type(sot))
|
six.text_type(sot))
|
||||||
sot = filt.ServiceFilter(service_type='identity',
|
sot = filt.ServiceFilter(service_type='identity',
|
||||||
visibility='publicURL')
|
interface='publicURL')
|
||||||
self.assertEqual("service_type=identity,visibility=public",
|
self.assertEqual("service_type=identity,interface=public",
|
||||||
six.text_type(sot))
|
six.text_type(sot))
|
||||||
sot = filt.ServiceFilter(service_type='identity',
|
sot = filt.ServiceFilter(service_type='identity',
|
||||||
visibility='internalURL')
|
interface='internalURL')
|
||||||
self.assertEqual("service_type=identity,visibility=internal",
|
self.assertEqual("service_type=identity,interface=internal",
|
||||||
six.text_type(sot))
|
six.text_type(sot))
|
||||||
sot = filt.ServiceFilter(service_type='identity',
|
sot = filt.ServiceFilter(service_type='identity',
|
||||||
visibility='adminURL')
|
interface='adminURL')
|
||||||
self.assertEqual("service_type=identity,visibility=admin",
|
self.assertEqual("service_type=identity,interface=admin",
|
||||||
six.text_type(sot))
|
six.text_type(sot))
|
||||||
self.assertRaises(exceptions.SDKException, filt.ServiceFilter,
|
self.assertRaises(exceptions.SDKException, filt.ServiceFilter,
|
||||||
service_type='identity', visibility='b')
|
service_type='identity', interface='b')
|
||||||
sot = filt.ServiceFilter(service_type='identity', visibility=None)
|
sot = filt.ServiceFilter(service_type='identity', interface=None)
|
||||||
self.assertEqual("service_type=identity", six.text_type(sot))
|
self.assertEqual("service_type=identity", six.text_type(sot))
|
||||||
|
|
||||||
def test_match_service_type(self):
|
def test_match_service_type(self):
|
||||||
|
@ -89,33 +89,33 @@ class TestServiceFilter(testtools.TestCase):
|
||||||
self.assertFalse(sot.match_region('West'))
|
self.assertFalse(sot.match_region('West'))
|
||||||
self.assertFalse(sot.match_region(None))
|
self.assertFalse(sot.match_region(None))
|
||||||
|
|
||||||
def test_match_visibility(self):
|
def test_match_interface(self):
|
||||||
sot = filt.ServiceFilter(service_type='identity',
|
sot = filt.ServiceFilter(service_type='identity',
|
||||||
visibility='internal')
|
interface='internal')
|
||||||
self.assertFalse(sot.match_visibility('admin'))
|
self.assertFalse(sot.match_interface('admin'))
|
||||||
self.assertTrue(sot.match_visibility('internal'))
|
self.assertTrue(sot.match_interface('internal'))
|
||||||
self.assertFalse(sot.match_visibility('public'))
|
self.assertFalse(sot.match_interface('public'))
|
||||||
|
|
||||||
def test_join(self):
|
def test_join(self):
|
||||||
a = filt.ServiceFilter(region='east')
|
a = filt.ServiceFilter(region='east')
|
||||||
b = filt.ServiceFilter(service_type='identity')
|
b = filt.ServiceFilter(service_type='identity')
|
||||||
result = a.join(b)
|
result = a.join(b)
|
||||||
self.assertEqual("service_type=identity,visibility=public,region=east",
|
self.assertEqual("service_type=identity,interface=public,region=east",
|
||||||
six.text_type(result))
|
six.text_type(result))
|
||||||
self.assertEqual("service_type=any,visibility=public,region=east",
|
self.assertEqual("service_type=any,interface=public,region=east",
|
||||||
six.text_type(a))
|
six.text_type(a))
|
||||||
self.assertEqual("service_type=identity,visibility=public",
|
self.assertEqual("service_type=identity,interface=public",
|
||||||
six.text_type(b))
|
six.text_type(b))
|
||||||
|
|
||||||
def test_join_visibility(self):
|
def test_join_interface(self):
|
||||||
user_preference = filt.ServiceFilter(visibility='public')
|
user_preference = filt.ServiceFilter(interface='public')
|
||||||
service_default = filt.ServiceFilter(visibility='admin')
|
service_default = filt.ServiceFilter(interface='admin')
|
||||||
result = user_preference.join(service_default)
|
result = user_preference.join(service_default)
|
||||||
self.assertEqual("public", result.visibility)
|
self.assertEqual("public", result.interface)
|
||||||
user_preference = filt.ServiceFilter(visibility=None)
|
user_preference = filt.ServiceFilter(interface=None)
|
||||||
service_default = filt.ServiceFilter(visibility='admin')
|
service_default = filt.ServiceFilter(interface='admin')
|
||||||
result = user_preference.join(service_default)
|
result = user_preference.join(service_default)
|
||||||
self.assertEqual("admin", result.visibility)
|
self.assertEqual("admin", result.interface)
|
||||||
|
|
||||||
def test_join_version(self):
|
def test_join_version(self):
|
||||||
user_preference = filt.ServiceFilter(version='v2')
|
user_preference = filt.ServiceFilter(version='v2')
|
||||||
|
@ -126,14 +126,14 @@ class TestServiceFilter(testtools.TestCase):
|
||||||
)
|
)
|
||||||
self.assertEqual('', user_preference.join(service_default).version)
|
self.assertEqual('', user_preference.join(service_default).version)
|
||||||
|
|
||||||
def test_set_visibility(self):
|
def test_set_interface(self):
|
||||||
sot = filt.ServiceFilter()
|
sot = filt.ServiceFilter()
|
||||||
sot.set_visibility("PUBLICURL")
|
sot.set_interface("PUBLICURL")
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
sot.set_visibility("INTERNALURL")
|
sot.set_interface("INTERNALURL")
|
||||||
self.assertEqual('internal', sot.visibility)
|
self.assertEqual('internal', sot.interface)
|
||||||
sot.set_visibility("ADMINURL")
|
sot.set_interface("ADMINURL")
|
||||||
self.assertEqual('admin', sot.visibility)
|
self.assertEqual('admin', sot.interface)
|
||||||
|
|
||||||
def test_get_module(self):
|
def test_get_module(self):
|
||||||
sot = identity_service.IdentityService()
|
sot = identity_service.IdentityService()
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestBlockStoreService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = block_store_service.BlockStoreService()
|
sot = block_store_service.BlockStoreService()
|
||||||
self.assertEqual("volume", sot.service_type)
|
self.assertEqual("volume", sot.service_type)
|
||||||
self.assertEqual("public", sot.visibility)
|
self.assertEqual("public", sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestClusterService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = cluster_service.ClusterService()
|
sot = cluster_service.ClusterService()
|
||||||
self.assertEqual('clustering', sot.service_type)
|
self.assertEqual('clustering', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestComputeService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = compute_service.ComputeService()
|
sot = compute_service.ComputeService()
|
||||||
self.assertEqual('compute', sot.service_type)
|
self.assertEqual('compute', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestDatabaseService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = database_service.DatabaseService()
|
sot = database_service.DatabaseService()
|
||||||
self.assertEqual('database', sot.service_type)
|
self.assertEqual('database', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestIdentityService(testtools.TestCase):
|
||||||
def test_regular_service(self):
|
def test_regular_service(self):
|
||||||
sot = identity_service.IdentityService()
|
sot = identity_service.IdentityService()
|
||||||
self.assertEqual('identity', sot.service_type)
|
self.assertEqual('identity', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(2, len(sot.valid_versions))
|
self.assertEqual(2, len(sot.valid_versions))
|
||||||
|
@ -32,6 +32,6 @@ class TestIdentityService(testtools.TestCase):
|
||||||
def test_admin_service(self):
|
def test_admin_service(self):
|
||||||
sot = identity_service.AdminService()
|
sot = identity_service.AdminService()
|
||||||
self.assertEqual('identity', sot.service_type)
|
self.assertEqual('identity', sot.service_type)
|
||||||
self.assertEqual('admin', sot.visibility)
|
self.assertEqual('admin', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestImageService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = image_service.ImageService()
|
sot = image_service.ImageService()
|
||||||
self.assertEqual('image', sot.service_type)
|
self.assertEqual('image', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(2, len(sot.valid_versions))
|
self.assertEqual(2, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestKeyManagementService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = key_management_service.KeyManagementService()
|
sot = key_management_service.KeyManagementService()
|
||||||
self.assertEqual('key-manager', sot.service_type)
|
self.assertEqual('key-manager', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestMessageService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = message_service.MessageService()
|
sot = message_service.MessageService()
|
||||||
self.assertEqual('messaging', sot.service_type)
|
self.assertEqual('messaging', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestMetricService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = metric_service.MetricService()
|
sot = metric_service.MetricService()
|
||||||
self.assertEqual('metric', sot.service_type)
|
self.assertEqual('metric', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestNetworkService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = network_service.NetworkService()
|
sot = network_service.NetworkService()
|
||||||
self.assertEqual('network', sot.service_type)
|
self.assertEqual('network', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestObjectStoreService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = object_store_service.ObjectStoreService()
|
sot = object_store_service.ObjectStoreService()
|
||||||
self.assertEqual('object-store', sot.service_type)
|
self.assertEqual('object-store', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestOrchestrationService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = orchestration_service.OrchestrationService()
|
sot = orchestration_service.OrchestrationService()
|
||||||
self.assertEqual('orchestration', sot.service_type)
|
self.assertEqual('orchestration', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -20,7 +20,7 @@ class TestTelemetryService(testtools.TestCase):
|
||||||
def test_service(self):
|
def test_service(self):
|
||||||
sot = telemetry_service.TelemetryService()
|
sot = telemetry_service.TelemetryService()
|
||||||
self.assertEqual('metering', sot.service_type)
|
self.assertEqual('metering', sot.service_type)
|
||||||
self.assertEqual('public', sot.visibility)
|
self.assertEqual('public', sot.interface)
|
||||||
self.assertIsNone(sot.region)
|
self.assertIsNone(sot.region)
|
||||||
self.assertIsNone(sot.service_name)
|
self.assertIsNone(sot.service_name)
|
||||||
self.assertEqual(1, len(sot.valid_versions))
|
self.assertEqual(1, len(sot.valid_versions))
|
||||||
|
|
|
@ -77,8 +77,8 @@ class TestProfile(base.TestCase):
|
||||||
prof = profile.Profile()
|
prof = profile.Profile()
|
||||||
prof.set_name(prof.ALL, 'fee')
|
prof.set_name(prof.ALL, 'fee')
|
||||||
prof.set_region(prof.ALL, 'fie')
|
prof.set_region(prof.ALL, 'fie')
|
||||||
prof.set_visibility(prof.ALL, 'public')
|
prof.set_interface(prof.ALL, 'public')
|
||||||
for service in prof.service_names:
|
for service in prof.service_names:
|
||||||
self.assertEqual('fee', prof.get_preference(service).service_name)
|
self.assertEqual('fee', prof.get_preference(service).service_name)
|
||||||
self.assertEqual('fie', prof.get_preference(service).region)
|
self.assertEqual('fie', prof.get_preference(service).region)
|
||||||
self.assertEqual('public', prof.get_preference(service).visibility)
|
self.assertEqual('public', prof.get_preference(service).interface)
|
||||||
|
|
Loading…
Reference in New Issue