Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / neutron / models_factory.py @ 633f6952

History | View | Annotate | Download (1.9 kB)

1
import factory
2
import models
3
from random import choice
4
from string import letters, digits
5
from synnefo.db.models_factory import VirtualMachineFactory
6

    
7

    
8
def prefix_seq(x):
9
    return lambda n: x + '-{0}'.format(n)
10

    
11

    
12
def user_seq():
13
    return lambda n: 'user-{0}.example.com'.format(n)
14

    
15

    
16
def round_seq(x):
17
    size = len(x)
18
    return lambda n: x[int(n) % size]
19

    
20

    
21
def round_seq_first(x):
22
    size = len(x)
23
    return lambda n: x[int(n) % size][0]
24

    
25

    
26
def random_string(x):
27
    '''Returns a random string of length x'''
28
    return ''.join([choice(digits + letters) for i in range(x)])
29

    
30

    
31
class NetworkFactory(factory.DjangoModelFactory):
32
    FACTORY_FOR = models.Network
33

    
34
    name = factory.Sequence(prefix_seq('network'))
35
    userid = factory.Sequence(user_seq())
36
    flavor = factory.Sequence(round_seq(models.Network.FLAVORS.keys()))
37
    mode = factory.LazyAttribute(lambda a:
38
                                 models.Network.FLAVORS[a.flavor]['mode'])
39
    link = factory.Sequence(prefix_seq('link'))
40
    mac_prefix = 'aa:00:0'
41
    tags = factory.LazyAttribute(lambda a:
42
                                 models.Network.FLAVORS[a.flavor]['tags'])
43
    public = False
44
    deleted = False
45
    state = factory.Sequence(round_seq_first(models.Network.OPER_STATES))
46

    
47

    
48
class NetworkInterfaceFactory(factory.DjangoModelFactory):
49
    FACTORY_FOR = models.NetworkInterface
50

    
51
    machine = factory.SubFactory(VirtualMachineFactory)
52
    network = factory.SubFactory(NetworkFactory)
53
    name = random_string(5)
54

    
55
class SubnetFactory(factory.DjangoModelFactory):
56
    FACTORY_FOR = models.Subnet
57

    
58
    name = factory.LazyAttribute(lambda self: random_string(30))
59
    ipversion = 4
60
    cidr = factory.Sequence(lambda n: '192.168.{0}.0/24'.format(n))
61
    dhcp = True
62
    gateway = factory.Sequence(lambda n: '192.168.{0}.1'.format(n))
63

    
64

    
65
class SecurityGroupFactory(factory.DjangoModelFactory):
66
    FACTORY_FOR = models.SecurityGroup
67

    
68
    name = factory.LazyAttribute(lambda self: random_string(30))