Revision 0247388f snf-cyclades-app/synnefo/db/models_factory.py

b/snf-cyclades-app/synnefo/db/models_factory.py
33 33

  
34 34
import factory
35 35
from synnefo.db import models
36
from random import choice
37
from string import letters, digits
36 38

  
37 39

  
38 40
def prefix_seq(x):
......
53 55
    return lambda n: x[int(n) % size][0]
54 56

  
55 57

  
58
def random_string(x):
59
    """Returns a random string of length x"""
60
    return ''.join([choice(digits + letters) for i in range(x)])
61

  
62

  
56 63
class FlavorFactory(factory.DjangoModelFactory):
57 64
    FACTORY_FOR = models.Flavor
58 65

  
......
141 148

  
142 149
    name = factory.Sequence(prefix_seq('network'))
143 150
    userid = factory.Sequence(user_seq())
144
    subnet = factory.Sequence(lambda n: '192.168.{0}.0/24'.format(n))
145
    gateway = factory.LazyAttribute(lambda a: a.subnet[:-4] + '1')
146
    subnet6 = "2001:648:2ffc:1112::/64"
147
    dhcp = False
148 151
    flavor = factory.Sequence(round_seq(models.Network.FLAVORS.keys()))
149 152
    mode = factory.LazyAttribute(lambda a:
150 153
                                 models.Network.FLAVORS[a.flavor]['mode'])
......
157 160
    state = factory.Sequence(round_seq_first(models.Network.OPER_STATES))
158 161

  
159 162

  
160
class IPv6NetworkFactory(NetworkFactory):
161
    subnet = None
162
    gateway = None
163

  
164

  
165 163
class DeletedNetwork(NetworkFactory):
166 164
    deleted = True
167 165

  
......
177 175
class NetworkInterfaceFactory(factory.DjangoModelFactory):
178 176
    FACTORY_FOR = models.NetworkInterface
179 177

  
178
    name = factory.LazyAttribute(lambda self: random_string(30))
180 179
    machine = factory.SubFactory(VirtualMachineFactory)
181 180
    network = factory.SubFactory(NetworkFactory)
182 181
    index = factory.Sequence(lambda x: x, type=int)
183 182
    mac = factory.Sequence(lambda n: 'aa:{0}{0}:{0}{0}:aa:{0}{0}:{0}{0}'
184 183
                           .format(hex(int(n) % 15)[2:3]))
185
    ipv4 = factory.LazyAttributeSequence(lambda a, n: a.network.subnet[:-4] +
186
                                         '{0}'.format(int(n) + 2))
187 184
    state = "ACTIVE"
188 185
    firewall_profile =\
189 186
        factory.Sequence(round_seq_first(FACTORY_FOR.FIREWALL_PROFILES))
190 187

  
191 188

  
192
class FloatingIPFactory(factory.DjangoModelFactory):
193
    FACTORY_FOR = models.FloatingIP
189
class IPv4SubnetFactory(factory.DjangoModelFactory):
190
    FACTORY_FOR = models.Subnet
194 191

  
195
    machine = factory.SubFactory(VirtualMachineFactory)
196
    network = factory.SubFactory(NetworkFactory, public=False, deleted=False,
192
    network = factory.SubFactory(NetworkFactory)
193
    name = factory.LazyAttribute(lambda self: random_string(30))
194
    ipversion = 4
195
    cidr = factory.Sequence(lambda n: '192.168.{0}.0/24'.format(n))
196
    dhcp = True
197
    gateway = factory.Sequence(lambda n: '192.168.{0}.1'.format(n))
198
    dns_nameservers = []
199
    host_routes = []
200

  
201

  
202
class IPv6SubnetFactory(IPv4SubnetFactory):
203
    ipversion = 6
204
    cidr = "2001:648:2ffc:1112::/64"
205
    gateway = None
206

  
207

  
208
class IPv4AddressFactory(factory.DjangoModelFactory):
209
    FACTORY_FOR = models.IPAddress
210

  
211
    subnet = factory.SubFactory(IPv4SubnetFactory)
212
    network = factory.SubFactory(NetworkFactory)
213
    address =\
214
        factory.LazyAttributeSequence(lambda self, n: self.subnet.cidr[:-4] +
215
                                      '{0}'.format(int(n) + 2))
216

  
217

  
218
class FloatingIPFactory(IPv4AddressFactory):
219
    network = factory.SubFactory(NetworkFactory, public=False,
197 220
                                 floating_ip_pool=True)
198
    ipv4 = factory.LazyAttributeSequence(lambda a, n: a.network.subnet[:-4] +
199
                                         '{0}'.format(int(n) + 2))
221
    floating_ip = True
200 222

  
201 223

  
202 224
class BridgePoolTableFactory(factory.DjangoModelFactory):

Also available in: Unified diff