Files
deb-python-tempest-lib/tempest_lib/common/utils/data_utils.py
Andrey Pavlov bd6d154f14 Move data_utils functionaly from tempest.
This commit migrates all data_utils with tests and the misc utils
unit tests from the tempest repo. This includes 3 files from tempest
tempest/common/utils/data_utils.py,
tempest/tests/common/test_data_utils.py, and
tempest/tests/common/test_misc.py. This includes tempest commits:

2d88e49 Merge "DHCPv6 network tests"
41fa16d Hacking rule to forbid resource unsafe fixtures
bfa86c6 Merge "Use random binary data for test images"
5c3b6fe Use random binary data for test images
165a743 Merge "Refactor random url generation into its own method"
064e965 Refactor random url generation into its own method
9f921d6 Merge "Refactor _find_caller into a public test finder utility"
7efa5c3 Refactor _find_caller into a public test finder utility
f1794eb Merge "Add utils.misc unit tests"
4f46805 Add utils.misc unit tests
1fcf139 Merge "Add unit test for data_utils"
30f07b3 Merge "Remove unused build_url function in data_utils"
ce7c696 Add unit test for data_utils
c0a1e5c Remove unused build_url function in data_utils
fea1a7e Merge "tighten up isolated creds create"
6969b90 tighten up isolated creds create
9051bb5 Merge "Remove vim headers"
e8d31a0 Remove vim headers
e40967e Merge "API tests for Ironic"
62b1ed1 API tests for Ironic
5331151 Merge "Test image member is enforced"
a709b76 Test image member is enforced
4a2431d Inject "-tempest-" string to rand_name
39f9722 Replace OpenStack LLC with OpenStack Foundation
bb7ce44 Merge "Reduce chance of name collision for resources."
88d4f7c Reduce chance of name collision for resources.
d65aec0 Merge "Fix flavors tests so they can be run in parallel"
8abacf3 Fix flavors tests so they can be run in parallel
fc9e333 Fix PEP8 compliance problems
59889b7 Merge "Fix T401 and T402 errors"
f237ccb Fix T401 and T402 errors
34afe48 Merge "Fix import order to comply with import ordering rules."
a83a16e Fix import order to comply with import ordering rules.
4ef897c Merge "Fix and simplify arbitrary_string. lp#1085048"
47737d8 Fix and simplify arbitrary_string. lp#1085048
7ccda8c Simplify parse_image_id.
d246eb4 Merge "Initial add of Swift tests"
5d73443 Initial add of Swift tests
a5feec9 Merge "make the rand_name value shorter"
6ec6fc2 make the rand_name value shorter
aeddf63 Moved parse_image_id() to data_utils
3d9da9b Merge "Addresses lp#942382 - refactor configuration for clarity"
587385b Addresses lp#942382 - refactor configuration for clarity
25dd196 Merge "Fixed issue with white space after pep8 review Code...
7fb1efa Fixed issue with white space after pep8 review Code review...
ed8bef3 Changes the namespace from storm to tempest, as well as ...
e1b050d * Added build_url() utility that returns an endpoint URL based...
cb5d954 Removed unnecessary 'self' reference
1465d61 Initial import of tests from the Zodiac project. On suggestion...

to see the commit history for these files refer to the above sha1s in
the tempest repository

Change-Id: Idecf25bef6eeffb8b06387ac95d9060edb58be46
2015-02-20 19:32:15 +00:00

100 lines
3.1 KiB
Python

# Copyright 2012 OpenStack Foundation
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import itertools
import netaddr
import random
import uuid
def rand_uuid():
return str(uuid.uuid4())
def rand_uuid_hex():
return uuid.uuid4().hex
def rand_name(name=''):
randbits = str(random.randint(1, 0x7fffffff))
if name:
return name + '-' + randbits
else:
return randbits
def rand_url():
randbits = str(random.randint(1, 0x7fffffff))
return 'https://url-' + randbits + '.com'
def rand_int_id(start=0, end=0x7fffffff):
return random.randint(start, end)
def rand_mac_address():
"""Generate an Ethernet MAC address."""
# NOTE(vish): We would prefer to use 0xfe here to ensure that linux
# bridge mac addresses don't change, but it appears to
# conflict with libvirt, so we use the next highest octet
# that has the unicast and locally administered bits set
# properly: 0xfa.
# Discussion: https://bugs.launchpad.net/nova/+bug/921838
mac = [0xfa, 0x16, 0x3e,
random.randint(0x00, 0xff),
random.randint(0x00, 0xff),
random.randint(0x00, 0xff)]
return ':'.join(["%02x" % x for x in mac])
def parse_image_id(image_ref):
"""Return the image id from a given image ref."""
return image_ref.rsplit('/')[-1]
def arbitrary_string(size=4, base_text=None):
"""Return size characters from base_text
Repeating the base_text infinitely if needed.
"""
if not base_text:
base_text = 'test'
return ''.join(itertools.islice(itertools.cycle(base_text), size))
def random_bytes(size=1024):
"""Return size randomly selected bytes as a string."""
return ''.join([chr(random.randint(0, 255))
for i in range(size)])
def get_ipv6_addr_by_EUI64(cidr, mac):
# Check if the prefix is IPv4 address
is_ipv4 = netaddr.valid_ipv4(cidr)
if is_ipv4:
msg = "Unable to generate IP address by EUI64 for IPv4 prefix"
raise TypeError(msg)
try:
eui64 = int(netaddr.EUI(mac).eui64())
prefix = netaddr.IPNetwork(cidr)
return netaddr.IPAddress(prefix.first + eui64 ^ (1 << 57))
except (ValueError, netaddr.AddrFormatError):
raise TypeError('Bad prefix or mac format for generating IPv6 '
'address by EUI-64: %(prefix)s, %(mac)s:'
% {'prefix': cidr, 'mac': mac})
except TypeError:
raise TypeError('Bad prefix type for generate IPv6 address by '
'EUI-64: %s' % cidr)