import copy import json import os import sys from keystone import config from keystone import logging from keystone import models from keystone import test from keystone import utils import default_fixtures CONF = config.CONF NOVACLIENT_REPO = 'git://github.com/openstack/python-novaclient.git' class CompatTestCase(test.TestCase): def setUp(self): super(CompatTestCase, self).setUp() class NovaClientCompatMasterTestCase(CompatTestCase): def setUp(self): super(NovaClientCompatMasterTestCase, self).setUp() revdir = test.checkout_vendor(NOVACLIENT_REPO, 'master') self.add_path(revdir) from novaclient.keystone import client as ks_client from novaclient import client as base_client reload(ks_client) reload(base_client) CONF(config_files=['default.conf']) self.app = self.loadapp('default') self.load_backends() self.load_fixtures(default_fixtures) self.server = self.serveapp('default') def test_authenticate_and_tenants(self): from novaclient.keystone import client as ks_client from novaclient import client as base_client port = self.server.socket_info['socket'][1] CONF.public_port = port # NOTE(termie): novaclient wants a "/" TypeErrorat the end, keystoneclient does not # NOTE(termie): projectid is apparently sent as tenantName, so... that's # unfortunate. # NOTE(termie): novaclient seems to care about the region more than # keystoneclient conn = base_client.HTTPClient(auth_url="http://localhost:%s/v2.0/" % port, user='FOO', password='foo2', projectid='BAR', region_name='RegionOne') client = ks_client.Client(conn) client.authenticate() # NOTE(termie): novaclient doesn't know about tenants or anything like that # so just test that we can validate