blob: 951fb61d931ab5a15816cbb328a0e14c1ae5c0d8 [file] [log] [blame]
dwalleck5d734432012-10-04 01:11:47 -05001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
3# Copyright 2012 OpenStack, LLC
4# All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
Matthew Treinisha83a16e2012-12-07 13:44:02 -050018import itertools
Daryl Walleck1465d612011-11-02 02:22:15 -050019import random
Daryl Walleck587385b2012-03-03 13:00:26 -060020import re
Rohit Karajgie1b050d2011-12-02 16:13:18 -080021import urllib
Jaroslav Henner47737d82012-12-03 15:59:20 +010022
Daryl Walleck587385b2012-03-03 13:00:26 -060023from tempest import exceptions
Daryl Walleck1465d612011-11-02 02:22:15 -050024
25
Rohit Karajgicb5d9542011-12-02 14:17:06 -080026def rand_name(name='test'):
Ionuț Arțăriși6ec6fc22012-09-25 16:26:35 +020027 return name + str(random.randint(1, 999999))
Rohit Karajgie1b050d2011-12-02 16:13:18 -080028
29
Daryl Walleck587385b2012-03-03 13:00:26 -060030def build_url(host, port, api_version=None, path=None,
31 params=None, use_ssl=False):
Rohit Karajgie1b050d2011-12-02 16:13:18 -080032 """Build the request URL from given host, port, path and parameters"""
33
Daryl Walleck587385b2012-03-03 13:00:26 -060034 pattern = 'v\d\.\d'
35 if re.match(pattern, path):
36 message = 'Version should not be included in path.'
37 raise exceptions.InvalidConfiguration(message=message)
38
donald-ngo7fb1efa2011-12-13 17:17:36 -080039 if use_ssl:
Rohit Karajgie1b050d2011-12-02 16:13:18 -080040 url = "https://" + host
41 else:
42 url = "http://" + host
43
44 if port is not None:
45 url += ":" + port
46 url += "/"
47
Daryl Walleck587385b2012-03-03 13:00:26 -060048 if api_version is not None:
49 url += api_version + "/"
Rohit Karajgie1b050d2011-12-02 16:13:18 -080050
51 if path is not None:
52 url += path
53
54 if params is not None:
55 url += "?"
56 url += urllib.urlencode(params)
57
58 return url
Rohit Karajgiaeddf632012-05-04 05:39:13 -070059
60
61def parse_image_id(image_ref):
62 """Return the image id from a given image ref"""
Jaroslav Henner7ccda8c2012-12-03 16:25:25 +010063 return image_ref.rsplit('/')[-1]
dwalleck5d734432012-10-04 01:11:47 -050064
65
66def arbitrary_string(size=4, base_text=None):
Jaroslav Henner47737d82012-12-03 15:59:20 +010067 """
68 Return size characters from base_text, repeating the base_text infinitely
69 if needed.
70 """
71 if not base_text:
dwalleck5d734432012-10-04 01:11:47 -050072 base_text = 'test'
Jaroslav Henner47737d82012-12-03 15:59:20 +010073 return ''.join(itertools.islice(itertools.cycle(base_text), size))