diff --git a/keystone/backends/sqlalchemy/models.py b/keystone/backends/sqlalchemy/models.py
index c19b117b6d..4790386e93 100755
--- a/keystone/backends/sqlalchemy/models.py
+++ b/keystone/backends/sqlalchemy/models.py
@@ -172,3 +172,6 @@ class EndpointTemplates(Base, KeystoneBase):
internal_url = Column(String(2000))
enabled = Column(Boolean)
is_global = Column(Boolean)
+ version_id = Column(String(20))
+ version_list = Column(String(2000))
+ version_info = Column(String(500))
diff --git a/keystone/logic/service.py b/keystone/logic/service.py
index ab7a6ec02b..07c9445ee0 100755
--- a/keystone/logic/service.py
+++ b/keystone/logic/service.py
@@ -826,6 +826,9 @@ class IdentityService(object):
dendpoint_template.internal_url = endpoint_template.internal_url
dendpoint_template.enabled = endpoint_template.enabled
dendpoint_template.is_global = endpoint_template.is_global
+ dendpoint_template.version_id = endpoint_template.version_id
+ dendpoint_template.version_list = endpoint_template.version_list
+ dendpoint_template.version_info = endpoint_template.version_info
dendpoint_template = api.ENDPOINT_TEMPLATE.create(dendpoint_template)
endpoint_template.id = dendpoint_template.id
return endpoint_template
@@ -854,6 +857,9 @@ class IdentityService(object):
dendpoint_template.internal_url = endpoint_template.internal_url
dendpoint_template.enabled = endpoint_template.enabled
dendpoint_template.is_global = endpoint_template.is_global
+ dendpoint_template.version_id = endpoint_template.version_id
+ dendpoint_template.version_list = endpoint_template.version_list
+ dendpoint_template.version_info = endpoint_template.version_info
dendpoint_template = api.ENDPOINT_TEMPLATE.update(
endpoint_template_id, dendpoint_template)
return EndpointTemplate(
@@ -864,7 +870,11 @@ class IdentityService(object):
dendpoint_template.admin_url,
dendpoint_template.internal_url,
dendpoint_template.enabled,
- dendpoint_template.is_global)
+ dendpoint_template.is_global,
+ dendpoint_template.version_id,
+ dendpoint_template.version_list,
+ dendpoint_template.version_info
+ )
def delete_endpoint_template(self, admin_token, endpoint_template_id):
self.__validate_service_or_keystone_admin_token(admin_token)
@@ -894,7 +904,11 @@ class IdentityService(object):
dendpoint_template.admin_url,
dendpoint_template.internal_url,
dendpoint_template.enabled,
- dendpoint_template.is_global))
+ dendpoint_template.is_global,
+ dendpoint_template.version_id,
+ dendpoint_template.version_list,
+ dendpoint_template.version_info
+ ))
prev, next = api.ENDPOINT_TEMPLATE.get_page_markers(marker, limit)
links = []
if prev:
@@ -920,7 +934,11 @@ class IdentityService(object):
dendpoint_template.admin_url,
dendpoint_template.internal_url,
dendpoint_template.enabled,
- dendpoint_template.is_global)
+ dendpoint_template.is_global,
+ dendpoint_template.version_id,
+ dendpoint_template.version_list,
+ dendpoint_template.version_info
+ )
def get_tenant_endpoints(self, admin_token, marker, limit, url, tenant_id):
self.__validate_service_or_keystone_admin_token(admin_token)
diff --git a/keystone/logic/types/endpoint.py b/keystone/logic/types/endpoint.py
index 526e4a8f40..e3e6d3bffb 100644
--- a/keystone/logic/types/endpoint.py
+++ b/keystone/logic/types/endpoint.py
@@ -27,8 +27,10 @@ class EndpointTemplate(object):
try:
dom = etree.Element("root")
dom.append(etree.fromstring(xml_str))
- root = dom.find("{http://docs.openstack.org/identity/api/v2.0}" \
- "endpointTemplate")
+ root = dom.find(
+ "{http://docs.openstack.org/identity"\
+ "/api/ext/OSKSCATALOG/v1.0}" \
+ "endpointTemplate")
if root == None:
raise fault.BadRequestFault("Expecting endpointTemplate")
id = root.get("id")
@@ -39,8 +41,24 @@ class EndpointTemplate(object):
internal_url = root.get("internalURL")
enabled = root.get("enabled")
is_global = root.get("global")
+ version = root.find(
+ "{http://docs.openstack.org/identity/"\
+ "api/ext/OSKSCATALOG/v1.0}" \
+ "version")
+ version_id = None
+ version_info = None
+ version_list = None
+ if version is not None:
+ if version.get('id'):
+ version_id = version.get("id")
+ if version.get('info'):
+ version_info = version.get("info")
+ if version.get('list'):
+ version_list = version.get("list")
+
return EndpointTemplate(id, region, service, public_url, admin_url,
- internal_url, enabled, is_global)
+ internal_url, enabled, is_global,
+ version_id, version_list, version_info)
except etree.LxmlError as e:
raise fault.BadRequestFault("Cannot parse endpointTemplate",
str(e))
@@ -56,15 +74,19 @@ class EndpointTemplate(object):
internal_url = None
enabled = None
is_global = None
-
- if not "endpointTemplate" in obj:
- raise fault.BadRequestFault("Expecting endpointTemplate")
- endpoint_template = obj["endpointTemplate"]
+ version_id = None
+ version_list = None
+ version_info = None
+ if not "OS-KSCATALOG:endpointTemplate" in obj:
+ raise fault.BadRequestFault(
+ "Expecting OS-KSCATALOG:endpointTemplate")
+ endpoint_template = obj["OS-KSCATALOG:endpointTemplate"]
# Check that fields are valid
invalid = [key for key in endpoint_template if key not in
['id', 'region', 'serviceId', 'publicURL',
- 'adminURL', 'internalURL', 'enabled', 'global']]
+ 'adminURL', 'internalURL', 'enabled', 'global',
+ 'versionId', 'versionInfo', 'versionList']]
if invalid != []:
raise fault.BadRequestFault("Invalid attribute(s): %s"
% invalid)
@@ -88,15 +110,30 @@ class EndpointTemplate(object):
enabled = endpoint_template["enabled"]
if 'global' in endpoint_template:
is_global = endpoint_template["global"]
+ if 'versionId' in endpoint_template:
+ version_id = endpoint_template["versionId"]
+ else:
+ version_id = None
+ if 'versionInfo' in endpoint_template:
+ version_info = endpoint_template["versionInfo"]
+ else:
+ version_info = None
+ if 'versionList' in endpoint_template:
+ version_list = endpoint_template["versionList"]
+ else:
+ version_list = None
- return EndpointTemplate(id, region, service, public_url, admin_url,
- internal_url, enabled, is_global)
+ return EndpointTemplate(
+ id, region, service, public_url, admin_url,
+ internal_url, enabled, is_global, version_id,
+ version_list, version_info)
except (ValueError, TypeError) as e:
raise fault.BadRequestFault(\
"Cannot parse endpointTemplate", str(e))
def __init__(self, id, region, service, public_url, admin_url,
- internal_url, enabled, is_global):
+ internal_url, enabled, is_global,
+ version_id=None, version_list=None, version_info=None):
self.id = id
self.region = region
self.service = service
@@ -105,10 +142,14 @@ class EndpointTemplate(object):
self.internal_url = internal_url
self.enabled = bool(enabled)
self.is_global = bool(is_global)
+ self.version_id = version_id
+ self.version_list = version_list
+ self.version_info = version_info
def to_dom(self):
dom = etree.Element("endpointTemplate",
- xmlns="http://docs.openstack.org/identity/api/v2.0")
+ xmlns="http://docs.openstack.org/"
+ "identity/api/ext/OSKSCATALOG/v1.0")
if self.id:
dom.set("id", str(self.id))
if self.region:
@@ -125,6 +166,16 @@ class EndpointTemplate(object):
dom.set("enabled", str(self.enabled).lower())
if self.is_global:
dom.set("global", str(self.is_global).lower())
+ version = etree.Element("version",
+ xmlns="http://docs.openstack.org"
+ "/identity/api/ext/OSKSCATALOG/v1.0")
+ if self.version_id:
+ version.set("id", self.version_id)
+ if self.version_info:
+ version.set("info", self.version_info)
+ if self.version_list:
+ version.set("list", self.version_list)
+ dom.append(version)
return dom
def to_xml(self):
@@ -148,7 +199,13 @@ class EndpointTemplate(object):
endpoint_template["enabled"] = self.enabled
if self.is_global:
endpoint_template["global"] = self.is_global
- return {'endpointTemplate': endpoint_template}
+ if self.version_id:
+ endpoint_template["versionId"] = self.version_id
+ if self.version_info:
+ endpoint_template["versionInfo"] = self.version_info
+ if self.version_list:
+ endpoint_template["versionList"] = self.version_list
+ return {'OS-KSCATALOG:endpointTemplate': endpoint_template}
def to_json(self):
return json.dumps(self.to_dict())
@@ -163,7 +220,8 @@ class EndpointTemplates(object):
def to_xml(self):
dom = etree.Element("endpointTemplates")
- dom.set(u"xmlns", "http://docs.openstack.org/identity/api/v2.0")
+ dom.set(u"xmlns",
+ "http://docs.openstack.org/identity/api/ext/OSKSCATALOG/v1.0")
for t in self.values:
dom.append(t.to_dom())
@@ -174,10 +232,12 @@ class EndpointTemplates(object):
return etree.tostring(dom)
def to_json(self):
- values = [t.to_dict()["endpointTemplate"] for t in self.values]
+ values = [t.to_dict()["OS-KSCATALOG:endpointTemplate"]
+ for t in self.values]
links = [t.to_dict()["links"] for t in self.links]
- return json.dumps({"endpointTemplates":\
- {"values": values, "links": links}})
+ return json.dumps({"OS-KSCATALOG:endpointTemplates":\
+ {"OS-KSCATALOG:endpointTemplates": values,
+ "OS-KSCATALOG:endpointTemplates_links": links}})
class Endpoint(object):
@@ -189,7 +249,8 @@ class Endpoint(object):
def to_dom(self):
dom = etree.Element("endpoint",
- xmlns="http://docs.openstack.org/identity/api/v2.0")
+ xmlns="http://docs.openstack.org/"
+ "identity/api/ext/OSKSCATALOG/v1.0")
if self.id:
dom.set("id", str(self.id))
if self.href:
@@ -220,7 +281,8 @@ class Endpoints(object):
def to_xml(self):
dom = etree.Element("endpoints")
- dom.set(u"xmlns", "http://docs.openstack.org/identity/api/v2.0")
+ dom.set(u"xmlns",
+ "http://docs.openstack.org/identity/api/ext/OSKSCATALOG/v1.0")
for t in self.values:
dom.append(t.to_dom())
diff --git a/keystone/manage/__init__.py b/keystone/manage/__init__.py
index 3426d2874f..0c28369593 100644
--- a/keystone/manage/__init__.py
+++ b/keystone/manage/__init__.py
@@ -108,17 +108,17 @@ def process(*args):
if len(args) == 2 and action not in ['list']:
raise optparse.OptParseError(ID_NOT_SPECIFIED)
- else:
+ elif action not in ['list']:
object_id = args[2]
# Helper functions
-
def require_args(args, min, msg):
"""Ensure there are at least `min` arguments"""
if len(args) < min:
raise optparse.OptParseError(msg)
- optional_arg = (lambda args, x: len(args) > x and args[x] or None)
+ optional_arg = (lambda args, x:
+ len(args) > x and str(args[x]).strip() or None)
def print_table(header_row, rows):
"""Prints a lists of lists as table in a human readable format"""
@@ -187,9 +187,14 @@ def process(*args):
require_args(args, 9, "Missing arguments: endpointTemplates add "
"'region' 'service' 'publicURL' 'adminURL' 'internalURL' "
"'enabled' 'global'")
+ version_id = optional_arg(args, 9)
+ version_list = optional_arg(args, 10)
+ version_info = optional_arg(args, 11)
if api.add_endpoint_template(region=args[2], service=args[3],
public_url=args[4], admin_url=args[5], internal_url=args[6],
- enabled=args[7], is_global=args[8]):
+ enabled=args[7], is_global=args[8],
+ version_id=version_id, version_list=version_list,
+ version_info=version_info):
print("SUCCESS: Created EndpointTemplates for %s pointing to %s." %
(args[3], args[4]))
diff --git a/keystone/manage/api.py b/keystone/manage/api.py
index 0a3c06bc33..ca45295dad 100644
--- a/keystone/manage/api.py
+++ b/keystone/manage/api.py
@@ -95,7 +95,7 @@ def grant_role(role, user, tenant=None):
def add_endpoint_template(region, service, public_url, admin_url, internal_url,
- enabled, is_global):
+ enabled, is_global, version_id, version_list, version_info):
db_service = db_api.SERVICE.get_by_name(service)
if db_service is None:
raise IndexError("Service %s not found" % service)
@@ -107,6 +107,9 @@ def add_endpoint_template(region, service, public_url, admin_url, internal_url,
obj.internal_url = internal_url
obj.enabled = enabled
obj.is_global = is_global
+ obj.version_id = version_id
+ obj.version_list = version_list
+ obj.version_info = version_info
return db_api.ENDPOINT_TEMPLATE.create(obj)
diff --git a/keystone/test/functional/common.py b/keystone/test/functional/common.py
index 2213c1b8d1..c6c9d54111 100644
--- a/keystone/test/functional/common.py
+++ b/keystone/test/functional/common.py
@@ -488,6 +488,8 @@ class FunctionalTestCase(ApiTestCase):
xmlns = 'http://docs.openstack.org/identity/api/v2.0'
xmlns_ksadm = 'http://docs.openstack.org/identity/api/ext/OS-KSADM/v1.0'
+ xmlns_kscatalog = "http://docs.openstack.org/identity/api/ext"\
+ + "/OSKSCATALOG/v1.0"
def setUp(self):
"""Prepare keystone for system tests"""
@@ -736,7 +738,7 @@ class FunctionalTestCase(ApiTestCase):
tenant_id = optional_str(tenant_id)
endpoint_template_id = optional_str(endpoint_template_id)
- data = {"endpointTemplate": {"id": endpoint_template_id}}
+ data = {"OS-KSCATALOG:endpointTemplate": {"id": endpoint_template_id}}
return self.post_tenant_endpoint(tenant_id, as_json=data, **kwargs)
@@ -765,24 +767,31 @@ class FunctionalTestCase(ApiTestCase):
def create_endpoint_template(self, region=None, service_id=None,
public_url=None, admin_url=None, internal_url=None, enabled=True,
- is_global=True, **kwargs):
+ is_global=True, version_id=None,
+ version_list=None, version_info=None, **kwargs):
region = optional_str(region)
service_id = optional_str(service_id)
public_url = optional_url(public_url)
admin_url = optional_url(admin_url)
internal_url = optional_url(internal_url)
+ version_id = optional_url(version_id)
+ version_list = optional_url(version_list)
+ version_info = optional_url(version_info)
data = {
- "endpointTemplate": {
+ "OS-KSCATALOG:endpointTemplate": {
"region": region,
"serviceId": service_id,
"publicURL": public_url,
"adminURL": admin_url,
"internalURL": internal_url,
"enabled": enabled,
- "global": is_global}}
-
+ "global": is_global,
+ "versionId": version_id,
+ "versionInfo": version_info,
+ "versionList": version_list
+ }}
return self.post_endpoint_template(as_json=data, **kwargs)
def remove_endpoint_template(self, endpoint_template_id=None, **kwargs):
@@ -795,30 +804,40 @@ class FunctionalTestCase(ApiTestCase):
def update_endpoint_template(self, endpoint_template_id=None, region=None,
service_id=None, public_url=None, admin_url=None,
- internal_url=None, enabled=None, is_global=None, **kwargs):
+ internal_url=None, enabled=None, is_global=None,
+ version_id=None, version_list=None, version_info=None, **kwargs):
- data = {"endpointTemplate": {}}
+ data = {"OS-KSCATALOG:endpointTemplate": {}}
if region is not None:
- data['endpointTemplate']['region'] = region
+ data['OS-KSCATALOG:endpointTemplate']['region'] = region
if service_id is not None:
- data['endpointTemplate']['serviceId'] = service_id
+ data['OS-KSCATALOG:endpointTemplate']['serviceId'] = service_id
if public_url is not None:
- data['endpointTemplate']['publicURL'] = public_url
+ data['OS-KSCATALOG:endpointTemplate']['publicURL'] = public_url
if admin_url is not None:
- data['endpointTemplate']['adminURL'] = admin_url
+ data['OS-KSCATALOG:endpointTemplate']['adminURL'] = admin_url
if internal_url is not None:
- data['endpointTemplate']['internalURL'] = internal_url
+ data['OS-KSCATALOG:endpointTemplate']['internalURL'] = internal_url
if enabled is not None:
- data['endpointTemplate']['enabled'] = enabled
+ data['OS-KSCATALOG:endpointTemplate']['enabled'] = enabled
if is_global is not None:
- data['endpointTemplate']['global'] = is_global
+ data['OS-KSCATALOG:endpointTemplate']['global'] = is_global
+
+ if version_id is not None:
+ data['OS-KSCATALOG:endpointTemplate']['versionId'] = version_id
+
+ if version_list is not None:
+ data['OS-KSCATALOG:endpointTemplate']['versionList'] = version_list
+
+ if version_info is not None:
+ data['OS-KSCATALOG:endpointTemplate']['versionInfo'] = version_info
return self.put_endpoint_template(endpoint_template_id, as_json=data,
**kwargs)
diff --git a/keystone/test/functional/test_authentication.py b/keystone/test/functional/test_authentication.py
index 3adf6e4dde..84bfcd005c 100755
--- a/keystone/test/functional/test_authentication.py
+++ b/keystone/test/functional/test_authentication.py
@@ -35,7 +35,8 @@ class AuthenticationTest(common.FunctionalTestCase):
for x in range(0, 5):
self.services[x] = self.create_service().json['OS-KSADM:service']
self.endpoint_templates[x] = self.create_endpoint_template(
- service_id=self.services[x]['id']).json['endpointTemplate']
+ service_id=self.services[x]['id']).\
+ json['OS-KSCATALOG:endpointTemplate']
self.create_endpoint_for_tenant(self.tenant['id'],
self.endpoint_templates[x]['id'])
diff --git a/keystone/test/functional/test_endpoints.py b/keystone/test/functional/test_endpoints.py
index 1538ab4179..ed6243dfc6 100755
--- a/keystone/test/functional/test_endpoints.py
+++ b/keystone/test/functional/test_endpoints.py
@@ -25,14 +25,15 @@ class EndpointTemplatesTest(common.FunctionalTestCase):
self.service = self.create_service().json['OS-KSADM:service']
self.endpoint_template = self.create_endpoint_template(
- service_id=self.service['id']).json['endpointTemplate']
+ service_id=self.service['id']).\
+ json['OS-KSCATALOG:endpointTemplate']
class CreateEndpointTemplatesTest(EndpointTemplatesTest):
def test_create_endpoint_template(self):
endpoint_template = self.create_endpoint_template(
service_id=self.service['id'], assert_status=201).\
- json['endpointTemplate']
+ json['OS-KSCATALOG:endpointTemplate']
self.assertIsNotNone(endpoint_template['id'], endpoint_template)
self.assertIsNotNone(endpoint_template['serviceId'], endpoint_template)
@@ -47,12 +48,14 @@ class CreateEndpointTemplatesTest(EndpointTemplatesTest):
data = (' '
'') % (self.xmlns, region, self.service['id'],
+ 'publicURL="%s" adminURL="%s" '
+ 'internalURL="%s" enabled="%s" global="%s"/>'
+ ) % (self.xmlns_kscatalog, region, self.service['id'],
public_url, admin_url, internal_url, enabled, is_global)
r = self.post_endpoint_template(as_xml=data, assert_status=201)
- self.assertEqual(r.xml.tag, '{%s}endpointTemplate' % self.xmlns)
+ self.assertEqual(r.xml.tag,
+ '{%s}endpointTemplate' % self.xmlns_kscatalog)
self.assertIsNotNone(r.xml.get("id"))
self.assertEqual(r.xml.get("serviceId"), self.service['id'])
@@ -76,7 +79,7 @@ class CreateEndpointTemplatesTest(EndpointTemplatesTest):
self.admin_token = self.service_admin_token
endpoint_template = self.create_endpoint_template(
service_id=self.service['id'], assert_status=201).\
- json['endpointTemplate']
+ json['OS-KSCATALOG:endpointTemplate']
self.assertIsNotNone(endpoint_template['id'])
self.assertEqual(endpoint_template['serviceId'], self.service['id'])
@@ -85,12 +88,12 @@ class CreateEndpointTemplatesTest(EndpointTemplatesTest):
class GetEndpointTemplatesTest(EndpointTemplatesTest):
def test_get_endpoint_templates(self):
r = self.list_endpoint_templates(assert_status=200)
- self.assertIsNotNone(r.json['endpointTemplates'])
+ self.assertIsNotNone(r.json['OS-KSCATALOG:endpointTemplates'])
def test_get_endpoint_templates_using_service_admin_token(self):
self.admin_token = self.service_admin_token
r = self.list_endpoint_templates(assert_status=200)
- self.assertIsNotNone(r.json['endpointTemplates'])
+ self.assertIsNotNone(r.json['OS-KSCATALOG:endpointTemplates'])
def test_get_endpoint_templates_using_expired_auth_token(self):
self.admin_token = self.expired_admin_token
@@ -111,7 +114,8 @@ class GetEndpointTemplatesTest(EndpointTemplatesTest):
def test_get_endpoint_templates_xml(self):
r = self.get_endpoint_templates(assert_status=200, headers={
'Accept': 'application/xml'})
- self.assertEqual(r.xml.tag, "{%s}endpointTemplates" % self.xmlns)
+ self.assertEqual(r.xml.tag,
+ "{%s}endpointTemplates" % self.xmlns_kscatalog)
def test_get_endpoint_templates_xml_expired_auth_token(self):
self.admin_token = self.expired_admin_token
@@ -137,7 +141,7 @@ class GetEndpointTemplatesTest(EndpointTemplatesTest):
class GetEndpointTemplateTest(EndpointTemplatesTest):
def test_get_endpoint(self):
r = self.fetch_endpoint_template(self.endpoint_template['id'])
- self.assertIsNotNone(r.json['endpointTemplate'])
+ self.assertIsNotNone(r.json['OS-KSCATALOG:endpointTemplate'])
# def test_get_endpoint_using_service_admin_token(self):
# self.admin_token = service_admin_token
@@ -168,7 +172,8 @@ class GetEndpointTemplateTest(EndpointTemplatesTest):
r = self.get_endpoint_template(self.endpoint_template['id'],
headers={'Accept': 'application/xml'}, assert_status=200)
- self.assertEqual(r.xml.tag, "{%s}endpointTemplate" % self.xmlns)
+ self.assertEqual(r.xml.tag,
+ "{%s}endpointTemplate" % self.xmlns_kscatalog)
class UpdateEndpointTemplateTest(EndpointTemplatesTest):
@@ -188,7 +193,8 @@ class UpdateEndpointTemplateTest(EndpointTemplatesTest):
data = (' '
'') % (region,
self.service['id'], public_url, admin_url, internal_url,
@@ -197,7 +203,8 @@ class UpdateEndpointTemplateTest(EndpointTemplatesTest):
as_xml=data, assert_status=201, headers={
'Accept': 'application/xml'})
- self.assertEqual(r.xml.tag, '{%s}endpointTemplate' % self.xmlns)
+ self.assertEqual(r.xml.tag,
+ '{%s}endpointTemplate' % self.xmlns_kscatalog)
self.assertIsNotNone(r.xml.get("id"))
self.assertEqual(r.xml.get("serviceId"), self.service['id'])
@@ -300,18 +307,25 @@ class CreateEndpointRefsTest(EndpointTemplatesTest):
internal_url = common.unique_url()
enabled = True
is_global = True
+ version_id = common.unique_url()
+ version_info = common.unique_url()
+ version_list = common.unique_url()
data = (' '
'') % (region,
+ 'internalURL="%s" enabled="%s" global="%s">'
+ ''
+ '') % (region,
self.service['id'], public_url, admin_url, internal_url,
- enabled, is_global)
+ enabled, is_global, version_id, version_info, version_list)
r = self.post_endpoint_template(as_xml=data, assert_status=201,
headers={'Accept': 'application/xml'})
- self.assertEqual(r.xml.tag, '{%s}endpointTemplate' % self.xmlns)
+ self.assertEqual(r.xml.tag,
+ '{%s}endpointTemplate' % self.xmlns_kscatalog)
self.assertIsNotNone(r.xml.get("id"))
self.assertEqual(r.xml.get("serviceId"), self.service['id'])
@@ -321,12 +335,20 @@ class CreateEndpointRefsTest(EndpointTemplatesTest):
self.assertEqual(r.xml.get("internalURL"), internal_url)
self.assertEqual(r.xml.get("enabled"), str(enabled).lower())
self.assertEqual(r.xml.get("global"), str(is_global).lower())
+ version = r.xml.find(
+ "{http://docs.openstack.org/identity/"\
+ "api/ext/OSKSCATALOG/v1.0}" \
+ "version")
+ self.assertEqual(version.get("id"), version_id)
+ self.assertEqual(version.get("info"), version_info)
+ self.assertEqual(version.get("list"), version_list)
def test_endpoint_create_xml_using_expired_token(self):
self.admin_token = self.expired_admin_token
data = (' '
'') % (
common.unique_str(), self.service['id'], common.unique_url(),
@@ -338,7 +360,8 @@ class CreateEndpointRefsTest(EndpointTemplatesTest):
self.admin_token = self.disabled_admin_token
data = (' '
'') % (
common.unique_str(), self.service['id'], common.unique_url(),
@@ -350,7 +373,8 @@ class CreateEndpointRefsTest(EndpointTemplatesTest):
self.admin_token = ''
data = (' '
'') % (
common.unique_str(), self.service['id'], common.unique_url(),
@@ -362,7 +386,8 @@ class CreateEndpointRefsTest(EndpointTemplatesTest):
self.admin_token = common.unique_str()
data = (' '
'') % (
common.unique_str(), self.service['id'], common.unique_url(),
diff --git a/keystone/test/sampledata.py b/keystone/test/sampledata.py
index 575cc5c8cb..9dd53ae3e9 100644
--- a/keystone/test/sampledata.py
+++ b/keystone/test/sampledata.py
@@ -62,7 +62,8 @@ DEFAULT_FIXTURE = [
('endpointTemplates', 'add', 'RegionOne', 'cdn',
'http://cdn.publicinternets.com/v1.1/%tenant_id%',
'http://cdn.admin-nets.local/v1.1/%tenant_id%',
- 'http://127.0.0.1:7777/v1.1/%tenant_id%', '1', '0'),
+ 'http://127.0.0.1:7777/v1.1/%tenant_id%', '1',
+ '0', '1.1', 'http://127.0.0.1:7777/', 'http://127.0.0.1:7777/v1.1'),
# endpointTemplates
('endpointTemplates', 'add', 'RegionOne', 'swift',
'http://swift.publicinternets.com/v1/AUTH_%tenant_id%',