root / snf-cyclades-app / synnefo / neutron / models_factory.py @ efabd2d4
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 | efabd2d4 | Dionysis Grigoropoulos | gateway = factory.Sequence(lambda n: '192.168.{0}.1'.format(n)) |