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%',