From 9c8d7a4d8e5ff6b0973fa27ce5a70d2419f2f271 Mon Sep 17 00:00:00 2001 From: Thomas Duval Date: Tue, 6 Sep 2016 15:52:54 +0200 Subject: Update federation tests and nova commands. Change-Id: I8eed3fdc79ce72521a9db26d527c73a106fdd08f (cherry picked from commit 878770990beb5641ad70a4f669fd263e891dd1bb) --- tests/run_tests.py | 55 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 17 deletions(-) (limited to 'tests') diff --git a/tests/run_tests.py b/tests/run_tests.py index 2ed011be..4b702198 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -13,7 +13,12 @@ import os import sys import time import yaml - +import subprocess +import json +try: + import http.client as client +except ImportError: + import httplib as client PORT_ODL = 8181 HOST_ODL = "localhost" @@ -43,26 +48,42 @@ except ImportError: from urllib2 import HTTPBasicAuthHandler, build_opener, install_opener +def __get_keystone_url(): + with subprocess.Popen(["openstack", "endpoint", "show", "keystone", "-f", "yaml"], stdout=subprocess.PIPE) as proc: + y = yaml.load(proc.stdout.read()) + url = y['publicurl'] + url = url.replace("http://", "") + url = url.replace("https://", "") + host, port = url.split(":", maxsplit=1) + port = port.split("/")[0] + return host, port + + def test_federation(): # Retrieve Moon token - url = urlopen('http://{host}:{port}/moon/token'.format(host=HOST_ODL, port=PORT_ODL), - data='grant_type=password&username=admin&password=console'.encode('utf-8')) - code = url.getcode() - if code not in (200, 201, 202, 204): - return False, "Not able to retrieve Moon token (error code: {}).".format(code) + khost, kport = __get_keystone_url() + auth_data = {'username': 'admin', 'password': 'console'} + conn = client.HTTPConnection(khost, kport) + headers = {"Content-type": "application/json"} + conn.request("POST", "/moon/auth/tokens", json.dumps(auth_data).encode('utf-8'), headers=headers) + resp = conn.getresponse() + if resp.status not in (200, 201, 202, 204): + return False, "Not able to retrieve Moon token on {}:{} (error code: {}).".format(khost, kport, resp.status) + # Retrieve ODL token - auth_handler = HTTPBasicAuthHandler() - auth_handler.add_password(realm='Moon', - uri='http://{host}:{port}/auth/v1/domains'.format(host=HOST_ODL, port=PORT_ODL), - user='admin', - passwd='console') - opener = build_opener(auth_handler) - install_opener(opener) - url = urlopen('http://{host}:{port}/auth/v1/domains'.format(host=HOST_ODL, port=PORT_ODL)) - code = url.getcode() - if code not in (200, 201, 202, 204): - return False, "Not able to retrieve ODL token (error code: {}).".format(code) + # TODO (asteroide): must found how to get ODL host and port + # auth_handler = HTTPBasicAuthHandler() + # auth_handler.add_password(realm='Moon', + # uri='http://{host}:{port}/auth/v1/domains'.format(host=HOST_ODL, port=PORT_ODL), + # user='admin', + # passwd='console') + # opener = build_opener(auth_handler) + # install_opener(opener) + # url = urlopen('http://{host}:{port}/auth/v1/domains'.format(host=HOST_ODL, port=PORT_ODL)) + # code = url.getcode() + # if code not in (200, 201, 202, 204): + # return False, "Not able to retrieve ODL token (error code: {}).".format(code) return True, "" -- cgit 1.2.3-korg