root / snf-cyclades-app / synnefo / db / models_factory.py @ 595bc9b0
History | View | Annotate | Download (6.4 kB)
1 | 672db045 | Christos Stavrakakis | # Copyright 2012 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | 672db045 | Christos Stavrakakis | #
|
3 | 672db045 | Christos Stavrakakis | # Redistribution and use in source and binary forms, with or
|
4 | 672db045 | Christos Stavrakakis | # without modification, are permitted provided that the following
|
5 | 672db045 | Christos Stavrakakis | # conditions are met:
|
6 | 672db045 | Christos Stavrakakis | #
|
7 | 672db045 | Christos Stavrakakis | # 1. Redistributions of source code must retain the above
|
8 | 672db045 | Christos Stavrakakis | # copyright notice, this list of conditions and the following
|
9 | 672db045 | Christos Stavrakakis | # disclaimer.
|
10 | 672db045 | Christos Stavrakakis | #
|
11 | 672db045 | Christos Stavrakakis | # 2. Redistributions in binary form must reproduce the above
|
12 | 672db045 | Christos Stavrakakis | # copyright notice, this list of conditions and the following
|
13 | 672db045 | Christos Stavrakakis | # disclaimer in the documentation and/or other materials
|
14 | 672db045 | Christos Stavrakakis | # provided with the distribution.
|
15 | 672db045 | Christos Stavrakakis | #
|
16 | 672db045 | Christos Stavrakakis | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 | 672db045 | Christos Stavrakakis | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | 672db045 | Christos Stavrakakis | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | 672db045 | Christos Stavrakakis | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | 672db045 | Christos Stavrakakis | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | 672db045 | Christos Stavrakakis | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | 672db045 | Christos Stavrakakis | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | 672db045 | Christos Stavrakakis | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | 672db045 | Christos Stavrakakis | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | 672db045 | Christos Stavrakakis | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | 672db045 | Christos Stavrakakis | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | 672db045 | Christos Stavrakakis | # POSSIBILITY OF SUCH DAMAGE.
|
28 | 672db045 | Christos Stavrakakis | #
|
29 | 672db045 | Christos Stavrakakis | # The views and conclusions contained in the software and
|
30 | 672db045 | Christos Stavrakakis | # documentation are those of the authors and should not be
|
31 | 672db045 | Christos Stavrakakis | # interpreted as representing official policies, either expressed
|
32 | 672db045 | Christos Stavrakakis | # or implied, of GRNET S.A.
|
33 | 672db045 | Christos Stavrakakis | |
34 | 672db045 | Christos Stavrakakis | import factory |
35 | 672db045 | Christos Stavrakakis | from synnefo.db import models |
36 | 672db045 | Christos Stavrakakis | |
37 | 672db045 | Christos Stavrakakis | |
38 | 672db045 | Christos Stavrakakis | def prefix_seq(x): |
39 | 672db045 | Christos Stavrakakis | return lambda n: x + '-{0}'.format(n) |
40 | 672db045 | Christos Stavrakakis | |
41 | 672db045 | Christos Stavrakakis | |
42 | 672db045 | Christos Stavrakakis | def user_seq(): |
43 | 672db045 | Christos Stavrakakis | return lambda n: 'user-{0}.example.com'.format(n) |
44 | 672db045 | Christos Stavrakakis | |
45 | 672db045 | Christos Stavrakakis | |
46 | 672db045 | Christos Stavrakakis | def round_seq(x): |
47 | 672db045 | Christos Stavrakakis | size = len(x)
|
48 | 672db045 | Christos Stavrakakis | return lambda n: x[int(n) % size] |
49 | 672db045 | Christos Stavrakakis | |
50 | 672db045 | Christos Stavrakakis | |
51 | 672db045 | Christos Stavrakakis | def round_seq_first(x): |
52 | 672db045 | Christos Stavrakakis | size = len(x)
|
53 | 672db045 | Christos Stavrakakis | return lambda n: x[int(n) % size][0] |
54 | 672db045 | Christos Stavrakakis | |
55 | 672db045 | Christos Stavrakakis | |
56 | d4325f42 | Christos Stavrakakis | class FlavorFactory(factory.DjangoModelFactory): |
57 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.Flavor |
58 | 672db045 | Christos Stavrakakis | |
59 | 672db045 | Christos Stavrakakis | cpu = factory.Sequence(lambda n: n + 2, type=int) |
60 | 672db045 | Christos Stavrakakis | ram = factory.Sequence(lambda n: n * 512, type=int) |
61 | 672db045 | Christos Stavrakakis | disk = factory.Sequence(lambda n: n * 10, type=int) |
62 | 672db045 | Christos Stavrakakis | disk_template = 'drbd'
|
63 | 672db045 | Christos Stavrakakis | deleted = False
|
64 | 672db045 | Christos Stavrakakis | |
65 | 672db045 | Christos Stavrakakis | |
66 | d4325f42 | Christos Stavrakakis | class BackendFactory(factory.DjangoModelFactory): |
67 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.Backend |
68 | 672db045 | Christos Stavrakakis | |
69 | 672db045 | Christos Stavrakakis | clustername = factory.Sequence(prefix_seq('cluster'))
|
70 | 672db045 | Christos Stavrakakis | port = 5080
|
71 | 672db045 | Christos Stavrakakis | username = factory.Sequence(prefix_seq('username'))
|
72 | 672db045 | Christos Stavrakakis | password = factory.Sequence(prefix_seq('password'))
|
73 | 672db045 | Christos Stavrakakis | drained = False
|
74 | 672db045 | Christos Stavrakakis | offline = False
|
75 | 672db045 | Christos Stavrakakis | |
76 | 672db045 | Christos Stavrakakis | mfree = 8192
|
77 | 672db045 | Christos Stavrakakis | mtotal = 16384
|
78 | 672db045 | Christos Stavrakakis | dfree = 132423
|
79 | 672db045 | Christos Stavrakakis | dtotal = 14921932
|
80 | 672db045 | Christos Stavrakakis | pinst_cnt = 2
|
81 | 672db045 | Christos Stavrakakis | ctotal = 80
|
82 | 672db045 | Christos Stavrakakis | |
83 | 672db045 | Christos Stavrakakis | |
84 | 672db045 | Christos Stavrakakis | class DrainedBackend(BackendFactory): |
85 | 672db045 | Christos Stavrakakis | drained = True
|
86 | 672db045 | Christos Stavrakakis | |
87 | 672db045 | Christos Stavrakakis | |
88 | 672db045 | Christos Stavrakakis | class OfflineBackend(BackendFactory): |
89 | 672db045 | Christos Stavrakakis | offline = True
|
90 | 672db045 | Christos Stavrakakis | |
91 | 672db045 | Christos Stavrakakis | |
92 | d4325f42 | Christos Stavrakakis | class VirtualMachineFactory(factory.DjangoModelFactory): |
93 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.VirtualMachine |
94 | 672db045 | Christos Stavrakakis | |
95 | 672db045 | Christos Stavrakakis | name = factory.Sequence(prefix_seq('vm'))
|
96 | 672db045 | Christos Stavrakakis | userid = factory.Sequence(user_seq()) |
97 | 672db045 | Christos Stavrakakis | backend = factory.SubFactory(BackendFactory) |
98 | 672db045 | Christos Stavrakakis | imageid = '78491238479120243171243'
|
99 | 672db045 | Christos Stavrakakis | flavor = factory.SubFactory(FlavorFactory) |
100 | 672db045 | Christos Stavrakakis | deleted = False
|
101 | 672db045 | Christos Stavrakakis | suspended = False
|
102 | 672db045 | Christos Stavrakakis | operstate = factory.Sequence(round_seq_first(FACTORY_FOR.OPER_STATES)) |
103 | 672db045 | Christos Stavrakakis | |
104 | 672db045 | Christos Stavrakakis | |
105 | 672db045 | Christos Stavrakakis | class DeletedVirtualMachine(VirtualMachineFactory): |
106 | 672db045 | Christos Stavrakakis | deleted = True
|
107 | 672db045 | Christos Stavrakakis | |
108 | 672db045 | Christos Stavrakakis | |
109 | 672db045 | Christos Stavrakakis | class ErrorVirtualMachine(VirtualMachineFactory): |
110 | 672db045 | Christos Stavrakakis | operstate = "ERROR"
|
111 | 672db045 | Christos Stavrakakis | |
112 | 672db045 | Christos Stavrakakis | |
113 | 672db045 | Christos Stavrakakis | class BuildVirtualMachine(VirtualMachineFactory): |
114 | 672db045 | Christos Stavrakakis | operstate = "BUILD"
|
115 | 672db045 | Christos Stavrakakis | |
116 | 672db045 | Christos Stavrakakis | |
117 | 672db045 | Christos Stavrakakis | class DestroyedVirtualMachine(VirtualMachineFactory): |
118 | 672db045 | Christos Stavrakakis | operstate = "DESTROYED"
|
119 | 672db045 | Christos Stavrakakis | |
120 | 672db045 | Christos Stavrakakis | |
121 | 672db045 | Christos Stavrakakis | class StartedVirtualMachine(VirtualMachineFactory): |
122 | 672db045 | Christos Stavrakakis | operstate = "STARTED"
|
123 | 672db045 | Christos Stavrakakis | |
124 | 672db045 | Christos Stavrakakis | |
125 | 672db045 | Christos Stavrakakis | class StopedVirtualMachine(VirtualMachineFactory): |
126 | 672db045 | Christos Stavrakakis | operstate = "STOPED"
|
127 | 672db045 | Christos Stavrakakis | |
128 | 672db045 | Christos Stavrakakis | |
129 | d4325f42 | Christos Stavrakakis | class VirtualMachineMetadataFactory(factory.DjangoModelFactory): |
130 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.VirtualMachineMetadata |
131 | 672db045 | Christos Stavrakakis | |
132 | 672db045 | Christos Stavrakakis | meta_key = factory.Sequence(prefix_seq('key'))
|
133 | 672db045 | Christos Stavrakakis | meta_value = factory.Sequence(prefix_seq('pass'))
|
134 | 672db045 | Christos Stavrakakis | vm = factory.SubFactory(VirtualMachineFactory) |
135 | 672db045 | Christos Stavrakakis | |
136 | 672db045 | Christos Stavrakakis | |
137 | d4325f42 | Christos Stavrakakis | class NetworkFactory(factory.DjangoModelFactory): |
138 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.Network |
139 | 672db045 | Christos Stavrakakis | |
140 | 672db045 | Christos Stavrakakis | name = factory.Sequence(prefix_seq('network'))
|
141 | 672db045 | Christos Stavrakakis | userid = factory.Sequence(user_seq()) |
142 | 672db045 | Christos Stavrakakis | subnet = factory.Sequence(lambda n: '192.168.{0}.0/24'.format(n)) |
143 | 672db045 | Christos Stavrakakis | gateway = factory.LazyAttribute(lambda a: a.subnet[:-4] + '1') |
144 | 672db045 | Christos Stavrakakis | dhcp = False
|
145 | 672db045 | Christos Stavrakakis | flavor = factory.Sequence(round_seq(models.Network.FLAVORS.keys())) |
146 | 672db045 | Christos Stavrakakis | mode = factory.LazyAttribute(lambda a:
|
147 | 672db045 | Christos Stavrakakis | models.Network.FLAVORS[a.flavor]['mode'])
|
148 | 672db045 | Christos Stavrakakis | link = factory.Sequence(prefix_seq('link'))
|
149 | 672db045 | Christos Stavrakakis | mac_prefix = 'aa:00:0'
|
150 | 672db045 | Christos Stavrakakis | tags = factory.LazyAttribute(lambda a:
|
151 | 672db045 | Christos Stavrakakis | models.Network.FLAVORS[a.flavor]['tags'])
|
152 | 672db045 | Christos Stavrakakis | public = False
|
153 | 672db045 | Christos Stavrakakis | deleted = False
|
154 | 672db045 | Christos Stavrakakis | state = factory.Sequence(round_seq_first(models.Network.OPER_STATES)) |
155 | 672db045 | Christos Stavrakakis | |
156 | 672db045 | Christos Stavrakakis | |
157 | 672db045 | Christos Stavrakakis | class DeletedNetwork(NetworkFactory): |
158 | 672db045 | Christos Stavrakakis | deleted = True
|
159 | 672db045 | Christos Stavrakakis | |
160 | 672db045 | Christos Stavrakakis | |
161 | d4325f42 | Christos Stavrakakis | class BackendNetworkFactory(factory.DjangoModelFactory): |
162 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.BackendNetwork |
163 | 672db045 | Christos Stavrakakis | |
164 | 672db045 | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory) |
165 | 672db045 | Christos Stavrakakis | backend = factory.SubFactory(BackendFactory) |
166 | 672db045 | Christos Stavrakakis | operstate = factory.Sequence(round_seq_first(FACTORY_FOR.OPER_STATES)) |
167 | 672db045 | Christos Stavrakakis | |
168 | 672db045 | Christos Stavrakakis | |
169 | d4325f42 | Christos Stavrakakis | class NetworkInterfaceFactory(factory.DjangoModelFactory): |
170 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.NetworkInterface |
171 | 672db045 | Christos Stavrakakis | |
172 | 672db045 | Christos Stavrakakis | machine = factory.SubFactory(VirtualMachineFactory) |
173 | 672db045 | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory) |
174 | 672db045 | Christos Stavrakakis | index = factory.Sequence(lambda x: x, type=int) |
175 | 672db045 | Christos Stavrakakis | mac = factory.Sequence(lambda n:
|
176 | 68b952f9 | Christos Stavrakakis | 'aa:{0}{0}:{0}{0}:aa:{0}{0}:{0}{0}'.format(hex(int(n) % 15)[2:3])) |
177 | 68b952f9 | Christos Stavrakakis | ipv4 = factory.LazyAttributeSequence(lambda a, n: a.network.subnet[:-4] + |
178 | 672db045 | Christos Stavrakakis | '{0}'.format(int(n) + 2)) |
179 | 939d71dd | Christos Stavrakakis | state = "ACTIVE"
|
180 | 672db045 | Christos Stavrakakis | firewall_profile =\ |
181 | 672db045 | Christos Stavrakakis | factory.Sequence(round_seq_first(FACTORY_FOR.FIREWALL_PROFILES)) |
182 | 672db045 | Christos Stavrakakis | |
183 | 672db045 | Christos Stavrakakis | |
184 | c2876228 | Christos Stavrakakis | class FloatingIPFactory(factory.DjangoModelFactory): |
185 | c2876228 | Christos Stavrakakis | FACTORY_FOR = models.FloatingIP |
186 | c2876228 | Christos Stavrakakis | |
187 | c2876228 | Christos Stavrakakis | machine = factory.SubFactory(VirtualMachineFactory) |
188 | 9115d567 | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory, public=False, deleted=False, |
189 | 9115d567 | Christos Stavrakakis | floating_ip_pool=True)
|
190 | c2876228 | Christos Stavrakakis | ipv4 = factory.LazyAttributeSequence(lambda a, n: a.network.subnet[:-4] + |
191 | c2876228 | Christos Stavrakakis | '{0}'.format(int(n) + 2)) |
192 | c2876228 | Christos Stavrakakis | |
193 | c2876228 | Christos Stavrakakis | |
194 | d4325f42 | Christos Stavrakakis | class BridgePoolTableFactory(factory.DjangoModelFactory): |
195 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.BridgePoolTable |
196 | 672db045 | Christos Stavrakakis | |
197 | 672db045 | Christos Stavrakakis | size = 20
|
198 | 672db045 | Christos Stavrakakis | base = 'prv'
|
199 | 672db045 | Christos Stavrakakis | |
200 | 672db045 | Christos Stavrakakis | |
201 | d4325f42 | Christos Stavrakakis | class MacPrefixPoolTableFactory(factory.DjangoModelFactory): |
202 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.MacPrefixPoolTable |
203 | 672db045 | Christos Stavrakakis | size = 100
|
204 | 672db045 | Christos Stavrakakis | base = 'aa:00:0'
|
205 | d552dddd | Christos Stavrakakis | |
206 | d552dddd | Christos Stavrakakis | |
207 | d4325f42 | Christos Stavrakakis | class QuotaHolderSerialFactory(factory.DjangoModelFactory): |
208 | d552dddd | Christos Stavrakakis | FACTORY_FOR = models.QuotaHolderSerial |
209 | 41a7fae7 | Christos Stavrakakis | serial = factory.Sequence(lambda x: x, type=int) |