From 9ba0e9a2a25a08e8ceb5036bea8e01c06d0cb16b Mon Sep 17 00:00:00 2001 From: Nolan Brubaker <nolan.brubaker@rackspace.com> Date: Fri, 2 Jun 2017 14:44:58 -0400 Subject: [PATCH] Refactor glance image tests to use OpenStackSDK This reduces the number of direct dependencies, and makes the tests more uniform. Since glance was the only remaining test with the direct client references, the imports and code using the clients directly have been removed. Change-Id: I81ac9273ee1646ede23e435da56ff211546a7d04 --- bowling_ball/rolling_tests.py | 54 +++++++++-------------------------- 1 file changed, 14 insertions(+), 40 deletions(-) diff --git a/bowling_ball/rolling_tests.py b/bowling_ball/rolling_tests.py index 91716a63..e1461295 100755 --- a/bowling_ball/rolling_tests.py +++ b/bowling_ball/rolling_tests.py @@ -19,9 +19,6 @@ from __future__ import division import argparse import datetime -from keystoneauth1.identity import v3 -from keystoneauth1 import session -from keystoneclient.v3 import client as key_client import logging import os from openstack import connection @@ -29,7 +26,6 @@ from openstack import profile import signal import sys import time -import glanceclient import tempfile logger = logging.getLogger(__name__) @@ -94,20 +90,6 @@ class ServiceTest(object): console.setFormatter(formatter) logger.addHandler(console) - # This is useful to a lot of tests, so implement it here for re-use - def get_session(self): - auth_url = os.environ['OS_AUTH_URL'] - password = os.environ['OS_PASSWORD'] - auth = v3.Password(auth_url=auth_url, username="admin", - password=password, project_name="admin", - user_domain_id="default", - project_domain_id="default") - sess = session.Session(auth=auth) - return sess - - def get_keystone_client(self, session): - return key_client.Client(session=session) - def get_connection(self): """Get an OpenStackSDK connection""" auth_url = os.environ['OS_AUTH_URL'] @@ -168,34 +150,26 @@ class GlanceTest(ServiceTest): self.temp_file.seek(0) def run(self): - sess = self.get_session() - keystone = self.get_keystone_client(sess) - endpoint = self.get_glance_endpoint(keystone) + self.get_connection() + + image_attrs = { + 'name': 'Rolling test', + 'disk_format': 'raw', + 'container_format': 'bare', + 'data': self.temp_file, + 'visibility': 'public', + } + + self.conn.image.upload_image(**image_attrs) + + image = self.conn.image.find_image('Rolling test') + self.conn.image.delete_image(image, ignore_missing=False) - glance = glanceclient.Client(version='2', - endpoint=endpoint, session=sess) - image = glance.images.create(name="Rolling test", - disk_format="raw", - container_format="bare") - glance.images.upload(image.id, self.temp_file) - glance.images.delete(image.id) self.temp_file.close() msg = "Image created and deleted." return msg - def get_glance_endpoint(self, keystone): - """Get the glance admin endpoint - - Because we don't want to set up SSL handling, use the plain HTTP - endpoints. - """ - service_id = keystone.services.find(name='glance') - glance_endpoint = keystone.endpoints.list(service=service_id, - interface='admin')[0] - # The glance client wants the URL, not the keystone object - return glance_endpoint.url - class NovaTest(ServiceTest): service_name = 'nova'