from novaclient import exceptions from novaclient import service_catalog from tests import utils # Taken directly from keystone/content/common/samples/auth.json # Do not edit this structure. Instead, grab the latest from there. SERVICE_CATALOG = { "access":{ "token":{ "id":"ab48a9efdfedb23ty3494", "expires":"2010-11-01T03:32:15-05:00", "tenant":{ "id": "345", "name": "My Project" } }, "user":{ "id":"123", "name":"jqsmith", "roles":[{ "id":"234", "name":"compute:admin" }, { "id":"235", "name":"object-store:admin", "tenantId":"1" } ], "roles_links":[] }, "serviceCatalog":[{ "name":"Cloud Servers", "type":"compute", "endpoints":[{ "tenantId":"1", "publicURL":"https://compute.north.host/v1/1234", "internalURL":"https://compute.north.host/v1/1234", "region":"North", "versionId":"1.0", "versionInfo":"https://compute.north.host/v1.0/", "versionList":"https://compute.north.host/" }, { "tenantId":"2", "publicURL":"https://compute.north.host/v1.1/3456", "internalURL":"https://compute.north.host/v1.1/3456", "region":"North", "versionId":"1.1", "versionInfo":"https://compute.north.host/v1.1/", "versionList":"https://compute.north.host/" } ], "endpoints_links":[] }, { "name":"Cloud Files", "type":"object-store", "endpoints":[{ "tenantId":"11", "publicURL":"https://compute.north.host/v1/blah-blah", "internalURL":"https://compute.north.host/v1/blah-blah", "region":"South", "versionId":"1.0", "versionInfo":"uri", "versionList":"uri" }, { "tenantId":"2", "publicURL":"https://compute.north.host/v1.1/blah-blah", "internalURL":"https://compute.north.host/v1.1/blah-blah", "region":"South", "versionId":"1.1", "versionInfo":"https://compute.north.host/v1.1/", "versionList":"https://compute.north.host/" } ], "endpoints_links":[{ "rel":"next", "href":"https://identity.north.host/v2.0/endpoints?marker=2" } ] } ], "serviceCatalog_links":[{ "rel":"next", "href":"https://identity.host/v2.0/endpoints?session=2hfh8Ar&marker=2" } ] } } class ServiceCatalogTest(utils.TestCase): def test_building_a_service_catalog(self): sc = service_catalog.ServiceCatalog(SERVICE_CATALOG) self.assertEquals(sc.url_for(), "https://compute.north.host/v1/1234") self.assertEquals(sc.url_for('tenantId', '1'), "https://compute.north.host/v1/1234") self.assertEquals(sc.url_for('tenantId', '2'), "https://compute.north.host/v1.1/3456") self.assertRaises(exceptions.EndpointNotFound, sc.url_for, "region", "South")