Merge "Fix mutable default arguments in tests"

This commit is contained in:
Jenkins 2016-04-20 20:22:55 +00:00 committed by Gerrit Code Review
commit e78113a5fc
5 changed files with 85 additions and 56 deletions
openstackclient/tests
compute/v2
fakes.py
image/v2
network/v2
volume/v2

@ -100,8 +100,7 @@ class FakeAggregate(object):
:return:
A FakeResource object, with id and other attributes
"""
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attribute
aggregate_info = {
@ -220,7 +219,7 @@ class FakeHypervisor(object):
"""Fake one or more hypervisor."""
@staticmethod
def create_one_hypervisor(attrs={}):
def create_one_hypervisor(attrs=None):
"""Create a fake hypervisor.
:param Dictionary attrs:
@ -228,6 +227,8 @@ class FakeHypervisor(object):
:return:
A FakeResource object, with id, hypervisor_hostname, and so on
"""
attrs = attrs or {}
# Set default attributes.
hypervisor_info = {
'id': 'hypervisor-id-' + uuid.uuid4().hex,
@ -266,7 +267,7 @@ class FakeHypervisor(object):
return hypervisor
@staticmethod
def create_hypervisors(attrs={}, count=2):
def create_hypervisors(attrs=None, count=2):
"""Create multiple fake hypervisors.
:param Dictionary attrs:
@ -287,7 +288,7 @@ class FakeHypervisorStats(object):
"""Fake one or more hypervisor stats."""
@staticmethod
def create_one_hypervisor_stats(attrs={}):
def create_one_hypervisor_stats(attrs=None):
"""Create a fake hypervisor stats.
:param Dictionary attrs:
@ -295,6 +296,8 @@ class FakeHypervisorStats(object):
:return:
A FakeResource object, with id, hypervisor_hostname, and so on
"""
attrs = attrs or {}
# Set default attributes.
stats_info = {
'count': 2,
@ -322,7 +325,7 @@ class FakeHypervisorStats(object):
return hypervisor_stats
@staticmethod
def create_hypervisors_stats(attrs={}, count=2):
def create_hypervisors_stats(attrs=None, count=2):
"""Create multiple fake hypervisors stats.
:param Dictionary attrs:
@ -352,8 +355,7 @@ class FakeSecurityGroup(object):
:return:
A FakeResource object, with id, name, etc.
"""
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attributes.
security_group_attrs = {
@ -403,8 +405,7 @@ class FakeSecurityGroupRule(object):
:return:
A FakeResource object, with id, etc.
"""
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attributes.
security_group_rule_attrs = {
@ -448,7 +449,7 @@ class FakeServer(object):
"""Fake one or more compute servers."""
@staticmethod
def create_one_server(attrs={}, methods={}):
def create_one_server(attrs=None, methods=None):
"""Create a fake server.
:param Dictionary attrs:
@ -458,6 +459,9 @@ class FakeServer(object):
:return:
A FakeResource object, with id, name, metadata
"""
attrs = attrs or {}
methods = methods or {}
# Set default attributes.
server_info = {
'id': 'server-id-' + uuid.uuid4().hex,
@ -480,7 +484,7 @@ class FakeServer(object):
return server
@staticmethod
def create_servers(attrs={}, methods={}, count=2):
def create_servers(attrs=None, methods=None, count=2):
"""Create multiple fake servers.
:param Dictionary attrs:
@ -530,8 +534,7 @@ class FakeFlavor(object):
:return:
A FakeResource object, with id, name, ram, vcpus, properties
"""
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attributes.
flavor_info = {
@ -569,7 +572,7 @@ class FakeFlavor(object):
return flavor
@staticmethod
def create_flavors(attrs={}, count=2):
def create_flavors(attrs=None, count=2):
"""Create multiple fake flavors.
:param Dictionary attrs:
@ -617,10 +620,9 @@ class FakeKeypair(object):
:return:
A FakeResource
"""
# Set default attributes.
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attributes.
keypair_info = {
'name': 'keypair-name-' + uuid.uuid4().hex,
'fingerprint': 'dummy',
@ -661,7 +663,7 @@ class FakeAvailabilityZone(object):
"""Fake one or more compute availability zones (AZs)."""
@staticmethod
def create_one_availability_zone(attrs={}):
def create_one_availability_zone(attrs=None):
"""Create a fake AZ.
:param Dictionary attrs:
@ -669,6 +671,8 @@ class FakeAvailabilityZone(object):
:return:
A FakeResource object with zoneName, zoneState, etc.
"""
attrs = attrs or {}
# Set default attributes.
host_name = uuid.uuid4().hex
service_name = uuid.uuid4().hex
@ -692,7 +696,7 @@ class FakeAvailabilityZone(object):
return availability_zone
@staticmethod
def create_availability_zones(attrs={}, count=2):
def create_availability_zones(attrs=None, count=2):
"""Create multiple fake AZs.
:param Dictionary attrs:
@ -715,7 +719,7 @@ class FakeFloatingIP(object):
"""Fake one or more floating ip."""
@staticmethod
def create_one_floating_ip(attrs={}):
def create_one_floating_ip(attrs=None):
"""Create a fake floating ip.
:param Dictionary attrs:
@ -723,6 +727,8 @@ class FakeFloatingIP(object):
:return:
A FakeResource object, with id, ip, and so on
"""
attrs = attrs or {}
# Set default attributes.
floating_ip_attrs = {
'id': 'floating-ip-id-' + uuid.uuid4().hex,
@ -742,7 +748,7 @@ class FakeFloatingIP(object):
return floating_ip
@staticmethod
def create_floating_ips(attrs={}, count=2):
def create_floating_ips(attrs=None, count=2):
"""Create multiple fake floating ips.
:param Dictionary attrs:
@ -781,7 +787,7 @@ class FakeNetwork(object):
"""Fake one or more networks."""
@staticmethod
def create_one_network(attrs={}):
def create_one_network(attrs=None):
"""Create a fake network.
:param Dictionary attrs:
@ -789,6 +795,8 @@ class FakeNetwork(object):
:return:
A FakeResource object, with id, label, cidr and so on
"""
attrs = attrs or {}
# Set default attributes.
network_attrs = {
'bridge': 'br100',
@ -834,7 +842,7 @@ class FakeNetwork(object):
return network
@staticmethod
def create_networks(attrs={}, count=2):
def create_networks(attrs=None, count=2):
"""Create multiple fake networks.
:param Dictionary attrs:
@ -863,8 +871,7 @@ class FakeHost(object):
:return:
A FakeResource object, with id and other attributes
"""
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attributes.
host_info = {

@ -142,7 +142,7 @@ class FakeModule(object):
class FakeResource(object):
def __init__(self, manager=None, info={}, loaded=False, methods={}):
def __init__(self, manager=None, info=None, loaded=False, methods=None):
"""Set attributes and methods for a resource.
:param manager:
@ -154,6 +154,9 @@ class FakeResource(object):
:param Dictionary methods:
A dictionary with all methods
"""
info = info or {}
methods = methods or {}
self.__name__ = type(self).__name__
self.manager = manager
self._info = info
@ -189,9 +192,12 @@ class FakeResource(object):
class FakeResponse(requests.Response):
def __init__(self, headers={}, status_code=200, data=None, encoding=None):
def __init__(self, headers=None, status_code=200,
data=None, encoding=None):
super(FakeResponse, self).__init__()
headers = headers or {}
self.status_code = status_code
self.headers.update(headers)

@ -181,7 +181,7 @@ class FakeImage(object):
"""
@staticmethod
def create_one_image(attrs={}):
def create_one_image(attrs=None):
"""Create a fake image.
:param Dictionary attrs:
@ -190,6 +190,8 @@ class FakeImage(object):
A FakeResource object with id, name, owner, protected,
visibility and tags attrs
"""
attrs = attrs or {}
# Set default attribute
image_info = {
'id': 'image-id' + uuid.uuid4().hex,
@ -210,7 +212,7 @@ class FakeImage(object):
return image
@staticmethod
def create_images(attrs={}, count=2):
def create_images(attrs=None, count=2):
"""Create multiple fake images.
:param Dictionary attrs:

@ -83,8 +83,7 @@ class FakeAddressScope(object):
:return:
A FakeResource object with name, id, etc.
"""
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attributes.
address_scope_attrs = {
@ -112,7 +111,7 @@ class FakeAvailabilityZone(object):
"""Fake one or more network availability zones (AZs)."""
@staticmethod
def create_one_availability_zone(attrs={}):
def create_one_availability_zone(attrs=None):
"""Create a fake AZ.
:param Dictionary attrs:
@ -120,6 +119,8 @@ class FakeAvailabilityZone(object):
:return:
A FakeResource object with name, state, etc.
"""
attrs = attrs or {}
# Set default attributes.
availability_zone = {
'name': uuid.uuid4().hex,
@ -136,7 +137,7 @@ class FakeAvailabilityZone(object):
return availability_zone
@staticmethod
def create_availability_zones(attrs={}, count=2):
def create_availability_zones(attrs=None, count=2):
"""Create multiple fake AZs.
:param Dictionary attrs:
@ -159,7 +160,7 @@ class FakeNetwork(object):
"""Fake one or more networks."""
@staticmethod
def create_one_network(attrs={}):
def create_one_network(attrs=None):
"""Create a fake network.
:param Dictionary attrs:
@ -168,6 +169,8 @@ class FakeNetwork(object):
A FakeResource object, with id, name, admin_state_up,
router_external, status, subnets, tenant_id
"""
attrs = attrs or {}
# Set default attributes.
network_attrs = {
'id': 'network-id-' + uuid.uuid4().hex,
@ -196,7 +199,7 @@ class FakeNetwork(object):
return network
@staticmethod
def create_networks(attrs={}, count=2):
def create_networks(attrs=None, count=2):
"""Create multiple fake networks.
:param Dictionary attrs:
@ -236,16 +239,16 @@ class FakePort(object):
"""Fake one or more ports."""
@staticmethod
def create_one_port(attrs={}):
def create_one_port(attrs=None):
"""Create a fake port.
:param Dictionary attrs:
A dictionary with all attributes
:param Dictionary methods:
A dictionary with all methods
:return:
A FakeResource object, with id, name, etc.
"""
attrs = attrs or {}
# Set default attributes.
port_attrs = {
'admin_state_up': True,
@ -288,7 +291,7 @@ class FakePort(object):
return port
@staticmethod
def create_ports(attrs={}, count=2):
def create_ports(attrs=None, count=2):
"""Create multiple fake ports.
:param Dictionary attrs:
@ -328,7 +331,7 @@ class FakeRouter(object):
"""Fake one or more routers."""
@staticmethod
def create_one_router(attrs={}):
def create_one_router(attrs=None):
"""Create a fake router.
:param Dictionary attrs:
@ -337,6 +340,8 @@ class FakeRouter(object):
A FakeResource object, with id, name, admin_state_up,
status, tenant_id
"""
attrs = attrs or {}
# Set default attributes.
router_attrs = {
'id': 'router-id-' + uuid.uuid4().hex,
@ -364,7 +369,7 @@ class FakeRouter(object):
return router
@staticmethod
def create_routers(attrs={}, count=2):
def create_routers(attrs=None, count=2):
"""Create multiple fake routers.
:param Dictionary attrs:
@ -412,8 +417,7 @@ class FakeSecurityGroup(object):
:return:
A FakeResource object, with id, name, etc.
"""
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attributes.
security_group_attrs = {
@ -467,8 +471,7 @@ class FakeSecurityGroupRule(object):
:return:
A FakeResource object, with id, etc.
"""
if attrs is None:
attrs = {}
attrs = attrs or {}
# Set default attributes.
security_group_rule_attrs = {
@ -519,7 +522,7 @@ class FakeSubnet(object):
"""Fake one or more subnets."""
@staticmethod
def create_one_subnet(attrs={}):
def create_one_subnet(attrs=None):
"""Create a fake subnet.
:param Dictionary attrs:
@ -527,6 +530,8 @@ class FakeSubnet(object):
:return:
A FakeResource object faking the subnet
"""
attrs = attrs or {}
# Set default attributes.
project_id = 'project-id-' + uuid.uuid4().hex
subnet_attrs = {
@ -551,13 +556,14 @@ class FakeSubnet(object):
subnet = fakes.FakeResource(info=copy.deepcopy(subnet_attrs),
loaded=True)
# Set attributes with special mappings in OpenStack SDK.
subnet.project_id = subnet_attrs['tenant_id']
return subnet
@staticmethod
def create_subnets(attrs={}, count=2):
def create_subnets(attrs=None, count=2):
"""Create multiple fake subnets.
:param Dictionary attrs:
@ -578,7 +584,7 @@ class FakeFloatingIP(object):
"""Fake one or more floating ip."""
@staticmethod
def create_one_floating_ip(attrs={}):
def create_one_floating_ip(attrs=None):
"""Create a fake floating ip.
:param Dictionary attrs:
@ -586,6 +592,8 @@ class FakeFloatingIP(object):
:return:
A FakeResource object, with id, ip, and so on
"""
attrs = attrs or {}
# Set default attributes.
floating_ip_attrs = {
'id': 'floating-ip-id-' + uuid.uuid4().hex,
@ -614,7 +622,7 @@ class FakeFloatingIP(object):
return floating_ip
@staticmethod
def create_floating_ips(attrs={}, count=2):
def create_floating_ips(attrs=None, count=2):
"""Create multiple fake floating ips.
:param Dictionary attrs:
@ -653,7 +661,7 @@ class FakeSubnetPool(object):
"""Fake one or more subnet pools."""
@staticmethod
def create_one_subnet_pool(attrs={}):
def create_one_subnet_pool(attrs=None):
"""Create a fake subnet pool.
:param Dictionary attrs:
@ -661,6 +669,8 @@ class FakeSubnetPool(object):
:return:
A FakeResource object faking the subnet pool
"""
attrs = attrs or {}
# Set default attributes.
subnet_pool_attrs = {
'id': 'subnet-pool-id-' + uuid.uuid4().hex,
@ -691,7 +701,7 @@ class FakeSubnetPool(object):
return subnet_pool
@staticmethod
def create_subnet_pools(attrs={}, count=2):
def create_subnet_pools(attrs=None, count=2):
"""Create multiple fake subnet pools.
:param Dictionary attrs:

@ -281,7 +281,7 @@ class FakeVolume(object):
"""
@staticmethod
def create_one_volume(attrs={}):
def create_one_volume(attrs=None):
"""Create a fake volume.
:param Dictionary attrs:
@ -289,6 +289,8 @@ class FakeVolume(object):
:retrun:
A FakeResource object with id, name, status, etc.
"""
attrs = attrs or {}
# Set default attribute
volume_info = {
'id': 'volume-id' + uuid.uuid4().hex,
@ -320,7 +322,7 @@ class FakeVolume(object):
return volume
@staticmethod
def create_volumes(attrs={}, count=2):
def create_volumes(attrs=None, count=2):
"""Create multiple fake volumes.
:param Dictionary attrs:
@ -361,7 +363,7 @@ class FakeAvailabilityZone(object):
"""Fake one or more volume availability zones (AZs)."""
@staticmethod
def create_one_availability_zone(attrs={}):
def create_one_availability_zone(attrs=None):
"""Create a fake AZ.
:param Dictionary attrs:
@ -369,6 +371,8 @@ class FakeAvailabilityZone(object):
:return:
A FakeResource object with zoneName, zoneState, etc.
"""
attrs = attrs or {}
# Set default attributes.
availability_zone = {
'zoneName': uuid.uuid4().hex,
@ -384,7 +388,7 @@ class FakeAvailabilityZone(object):
return availability_zone
@staticmethod
def create_availability_zones(attrs={}, count=2):
def create_availability_zones(attrs=None, count=2):
"""Create multiple fake AZs.
:param Dictionary attrs: