functional tests: fix tests work over SSL OpenStack Cloud

Change-Id: I3a6e02e96ed807ce4305876fe3c5798449fedc24
This commit is contained in:
Andrey Pavlov 2015-11-09 21:58:58 +03:00
parent bd2625eeb9
commit 64580a36d3
6 changed files with 30 additions and 17 deletions

View File

@ -224,6 +224,7 @@ instance_type = m1.ec2api
instance_type_alt = m1.ec2api-alt
ami_image_location=$CIRROS_IMAGE_MANIFEST
run_ssh=$run_ssh
ca_bundle=$OS_CACERT
EOF"
fi

View File

@ -231,12 +231,14 @@ class EC2TestCase(base.BaseTestCase):
@safe_setup
def setUpClass(cls):
super(EC2TestCase, cls).setUpClass()
cls.client = botocoreclient._get_ec2_client(
cls.client = botocoreclient.get_ec2_client(
CONF.aws.ec2_url, CONF.aws.aws_region,
CONF.aws.aws_access, CONF.aws.aws_secret)
cls.s3_client = botocoreclient._get_s3_client(
CONF.aws.aws_access, CONF.aws.aws_secret,
CONF.aws.ca_bundle)
cls.s3_client = botocoreclient.get_s3_client(
CONF.aws.s3_url, CONF.aws.aws_region,
CONF.aws.aws_access, CONF.aws.aws_secret)
CONF.aws.aws_access, CONF.aws.aws_secret,
CONF.aws.ca_bundle)
TesterStateHolder().ec2_client = cls.client
@classmethod

View File

@ -16,20 +16,26 @@
import botocore.session
def _get_client(client_name, url, region, access, secret):
def _get_client(client_name, url, region, access, secret, ca_bundle):
connection_data = {
'config_file': (None, 'AWS_CONFIG_FILE', None, None),
'region': ('region', 'BOTO_DEFAULT_REGION', region, None),
}
session = botocore.session.get_session(connection_data)
return session.create_client(
client_name, region_name=region, endpoint_url=url,
aws_access_key_id=access, aws_secret_access_key=secret)
kwargs = {
'region_name': region,
'endpoint_url': url,
'aws_access_key_id': access,
'aws_secret_access_key': secret
}
if ca_bundle:
kwargs['verify'] = ca_bundle
return session.create_client(client_name, **kwargs)
def _get_ec2_client(url, region, access, secret):
return _get_client('ec2', url, region, access, secret)
def get_ec2_client(url, region, access, secret, ca_bundle=None):
return _get_client('ec2', url, region, access, secret, ca_bundle)
def _get_s3_client(url, region, access, secret):
return _get_client('s3', url, region, access, secret)
def get_s3_client(url, region, access, secret, ca_bundle=None):
return _get_client('s3', url, region, access, secret, ca_bundle)

View File

@ -35,6 +35,10 @@ AWSGroup = [
cfg.StrOpt('s3_url',
default="http://localhost:3334/",
help="S3 URL"),
cfg.StrOpt('ca_bundle',
default=None,
help="The CA certificate bundle to use when verifying "
"SSL certificates."),
cfg.StrOpt('aws_secret',
default=None,
help="AWS Secret Key",

View File

@ -258,7 +258,7 @@ class FakeNetworkGenerator(EC2Objects):
% (user["tenant_id"]))
args = user['ec2args']
client = botocoreclient._get_ec2_client(
client = botocoreclient.get_ec2_client(
args['url'], args['region'], args['access'], args['secret'])
self.context["tenants"][tenant_id]["networks"] = list()
@ -272,7 +272,7 @@ class FakeNetworkGenerator(EC2Objects):
for user, tenant_id in rutils.iterate_per_tenants(
self.context["users"]):
args = user['ec2args']
client = botocoreclient._get_ec2_client(
client = botocoreclient.get_ec2_client(
args['url'], args['region'], args['access'], args['secret'])
self.cleanup_networks(tenant_id, client)
@ -334,7 +334,7 @@ class FakeServerGenerator(EC2Objects):
% (user["tenant_id"]))
args = user['ec2args']
client = botocoreclient._get_ec2_client(
client = botocoreclient.get_ec2_client(
args['url'], args['region'], args['access'], args['secret'])
if image_id is None:
@ -354,7 +354,7 @@ class FakeServerGenerator(EC2Objects):
for user, tenant_id in rutils.iterate_per_tenants(
self.context["users"]):
args = user['ec2args']
client = botocoreclient._get_ec2_client(
client = botocoreclient.get_ec2_client(
args['url'], args['region'], args['access'], args['secret'])
self.terminate_instances_and_wait(tenant_id, client)

View File

@ -47,7 +47,7 @@ class EC2APIPlugin(scenario.OpenStackScenario):
def _get_client(self, is_nova):
args = self.context['user']['ec2args']
url = args['nova_url'] if is_nova else args['url']
client = botocoreclient._get_ec2_client(
client = botocoreclient.get_ec2_client(
url, args['region'], args['access'], args['secret'])
return client