Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / neutron / models_factory.py @ 0dae1b9f

History | View | Annotate | Download (1.7 kB)

1 b0cda6f9 Marios Kogias
import factory
2 b0cda6f9 Marios Kogias
import models
3 0dae1b9f Dionysis Grigoropoulos
from random import choice
4 0dae1b9f Dionysis Grigoropoulos
from string import letters, digits
5 d6e16760 Marios Kogias
from synnefo.db.models_factory import VirtualMachineFactory
6 d6e16760 Marios Kogias
7 b0cda6f9 Marios Kogias
8 b0cda6f9 Marios Kogias
def prefix_seq(x):
9 b0cda6f9 Marios Kogias
    return lambda n: x + '-{0}'.format(n)
10 b0cda6f9 Marios Kogias
11 d6e16760 Marios Kogias
12 b0cda6f9 Marios Kogias
def user_seq():
13 b0cda6f9 Marios Kogias
    return lambda n: 'user-{0}.example.com'.format(n)
14 b0cda6f9 Marios Kogias
15 b0cda6f9 Marios Kogias
16 b0cda6f9 Marios Kogias
def round_seq(x):
17 b0cda6f9 Marios Kogias
    size = len(x)
18 b0cda6f9 Marios Kogias
    return lambda n: x[int(n) % size]
19 b0cda6f9 Marios Kogias
20 b0cda6f9 Marios Kogias
21 b0cda6f9 Marios Kogias
def round_seq_first(x):
22 b0cda6f9 Marios Kogias
    size = len(x)
23 b0cda6f9 Marios Kogias
    return lambda n: x[int(n) % size][0]
24 b0cda6f9 Marios Kogias
25 b0cda6f9 Marios Kogias
26 0dae1b9f Dionysis Grigoropoulos
def random_string(x):
27 0dae1b9f Dionysis Grigoropoulos
    '''Returns a random string of length x'''
28 0dae1b9f Dionysis Grigoropoulos
    return ''.join([choice(digits + letters) for i in range(x)])
29 0dae1b9f Dionysis Grigoropoulos
30 0dae1b9f Dionysis Grigoropoulos
31 b0cda6f9 Marios Kogias
class NetworkFactory(factory.DjangoModelFactory):
32 b0cda6f9 Marios Kogias
    FACTORY_FOR = models.Network
33 b0cda6f9 Marios Kogias
34 b0cda6f9 Marios Kogias
    name = factory.Sequence(prefix_seq('network'))
35 b0cda6f9 Marios Kogias
    userid = factory.Sequence(user_seq())
36 b0cda6f9 Marios Kogias
    flavor = factory.Sequence(round_seq(models.Network.FLAVORS.keys()))
37 b0cda6f9 Marios Kogias
    mode = factory.LazyAttribute(lambda a:
38 b0cda6f9 Marios Kogias
                                 models.Network.FLAVORS[a.flavor]['mode'])
39 b0cda6f9 Marios Kogias
    link = factory.Sequence(prefix_seq('link'))
40 b0cda6f9 Marios Kogias
    mac_prefix = 'aa:00:0'
41 b0cda6f9 Marios Kogias
    tags = factory.LazyAttribute(lambda a:
42 b0cda6f9 Marios Kogias
                                 models.Network.FLAVORS[a.flavor]['tags'])
43 b0cda6f9 Marios Kogias
    public = False
44 b0cda6f9 Marios Kogias
    deleted = False
45 b0cda6f9 Marios Kogias
    state = factory.Sequence(round_seq_first(models.Network.OPER_STATES))
46 b0cda6f9 Marios Kogias
47 b0cda6f9 Marios Kogias
48 d6e16760 Marios Kogias
class NetworkInterfaceFactory(factory.DjangoModelFactory):
49 d6e16760 Marios Kogias
    FACTORY_FOR = models.NetworkInterface
50 d6e16760 Marios Kogias
51 d6e16760 Marios Kogias
    machine = factory.SubFactory(VirtualMachineFactory)
52 d6e16760 Marios Kogias
    network = factory.SubFactory(NetworkFactory)
53 0dae1b9f Dionysis Grigoropoulos
54 0dae1b9f Dionysis Grigoropoulos
55 0dae1b9f Dionysis Grigoropoulos
class SubnetFactory(factory.DjangoModelFactory):
56 0dae1b9f Dionysis Grigoropoulos
    FACTORY_FOR = models.Subnet
57 0dae1b9f Dionysis Grigoropoulos
58 0dae1b9f Dionysis Grigoropoulos
    name = factory.LazyAttribute(lambda self: random_string(30))
59 0dae1b9f Dionysis Grigoropoulos
    ipversion = 4
60 0dae1b9f Dionysis Grigoropoulos
    cidr = factory.Sequence(lambda n: '192.168.{0}.0/24'.format(n))
61 0dae1b9f Dionysis Grigoropoulos
    dhcp = True
62 0dae1b9f Dionysis Grigoropoulos
    gateway = factory.Sequence(lambda n: '192.168.{0}.1/24'.format(n))