def getRegions(self, username, api_key, project_id, auth_url):
        """Get a list of available regions, given a keystone endpoint and credentials."""

        client = APIClient(
            username=username,
            password=api_key,
            project_id=project_id,
            auth_url=auth_url,
            is_admin=True
        )
        yield client.keystone_tenants()
        serviceCatalog = yield client.serviceCatalog()

        ep = []
        [ep.extend(x['endpoints']) for x in serviceCatalog]
        regions = set([x['region'] for x in ep])

        returnValue([{'key': c, 'label': c} for c in sorted(regions)])