root / snf-cyclades-app / synnefo / db / models_factory.py @ f32e8021
History | View | Annotate | Download (8.3 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 | e4f484da | Marios Kogias | from ipaddr import IPNetwork |
36 | 672db045 | Christos Stavrakakis | from synnefo.db import models |
37 | 0247388f | Christos Stavrakakis | from random import choice |
38 | 0247388f | Christos Stavrakakis | from string import letters, digits |
39 | 672db045 | Christos Stavrakakis | |
40 | 672db045 | Christos Stavrakakis | |
41 | 672db045 | Christos Stavrakakis | def prefix_seq(x): |
42 | 672db045 | Christos Stavrakakis | return lambda n: x + '-{0}'.format(n) |
43 | 672db045 | Christos Stavrakakis | |
44 | 672db045 | Christos Stavrakakis | |
45 | 672db045 | Christos Stavrakakis | def user_seq(): |
46 | 672db045 | Christos Stavrakakis | return lambda n: 'user-{0}.example.com'.format(n) |
47 | 672db045 | Christos Stavrakakis | |
48 | 672db045 | Christos Stavrakakis | |
49 | 672db045 | Christos Stavrakakis | def round_seq(x): |
50 | 672db045 | Christos Stavrakakis | size = len(x)
|
51 | 672db045 | Christos Stavrakakis | return lambda n: x[int(n) % size] |
52 | 672db045 | Christos Stavrakakis | |
53 | 672db045 | Christos Stavrakakis | |
54 | 672db045 | Christos Stavrakakis | def round_seq_first(x): |
55 | 672db045 | Christos Stavrakakis | size = len(x)
|
56 | 672db045 | Christos Stavrakakis | return lambda n: x[int(n) % size][0] |
57 | 672db045 | Christos Stavrakakis | |
58 | 672db045 | Christos Stavrakakis | |
59 | 0247388f | Christos Stavrakakis | def random_string(x): |
60 | 0247388f | Christos Stavrakakis | """Returns a random string of length x"""
|
61 | 0247388f | Christos Stavrakakis | return ''.join([choice(digits + letters) for i in range(x)]) |
62 | 0247388f | Christos Stavrakakis | |
63 | 0247388f | Christos Stavrakakis | |
64 | d4325f42 | Christos Stavrakakis | class FlavorFactory(factory.DjangoModelFactory): |
65 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.Flavor |
66 | 672db045 | Christos Stavrakakis | |
67 | 672db045 | Christos Stavrakakis | cpu = factory.Sequence(lambda n: n + 2, type=int) |
68 | 672db045 | Christos Stavrakakis | ram = factory.Sequence(lambda n: n * 512, type=int) |
69 | 672db045 | Christos Stavrakakis | disk = factory.Sequence(lambda n: n * 10, type=int) |
70 | 672db045 | Christos Stavrakakis | disk_template = 'drbd'
|
71 | 672db045 | Christos Stavrakakis | deleted = False
|
72 | 672db045 | Christos Stavrakakis | |
73 | 672db045 | Christos Stavrakakis | |
74 | d4325f42 | Christos Stavrakakis | class BackendFactory(factory.DjangoModelFactory): |
75 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.Backend |
76 | 672db045 | Christos Stavrakakis | |
77 | 672db045 | Christos Stavrakakis | clustername = factory.Sequence(prefix_seq('cluster'))
|
78 | 672db045 | Christos Stavrakakis | port = 5080
|
79 | 672db045 | Christos Stavrakakis | username = factory.Sequence(prefix_seq('username'))
|
80 | 672db045 | Christos Stavrakakis | password = factory.Sequence(prefix_seq('password'))
|
81 | 672db045 | Christos Stavrakakis | drained = False
|
82 | 672db045 | Christos Stavrakakis | offline = False
|
83 | 672db045 | Christos Stavrakakis | |
84 | 672db045 | Christos Stavrakakis | mfree = 8192
|
85 | 672db045 | Christos Stavrakakis | mtotal = 16384
|
86 | 672db045 | Christos Stavrakakis | dfree = 132423
|
87 | 672db045 | Christos Stavrakakis | dtotal = 14921932
|
88 | 672db045 | Christos Stavrakakis | pinst_cnt = 2
|
89 | 672db045 | Christos Stavrakakis | ctotal = 80
|
90 | 672db045 | Christos Stavrakakis | |
91 | c9976c84 | Christos Stavrakakis | disk_templates = ["file", "plain", "drbd"] |
92 | c9976c84 | Christos Stavrakakis | |
93 | 672db045 | Christos Stavrakakis | |
94 | 672db045 | Christos Stavrakakis | class DrainedBackend(BackendFactory): |
95 | 672db045 | Christos Stavrakakis | drained = True
|
96 | 672db045 | Christos Stavrakakis | |
97 | 672db045 | Christos Stavrakakis | |
98 | 672db045 | Christos Stavrakakis | class OfflineBackend(BackendFactory): |
99 | 672db045 | Christos Stavrakakis | offline = True
|
100 | 672db045 | Christos Stavrakakis | |
101 | 672db045 | Christos Stavrakakis | |
102 | d4325f42 | Christos Stavrakakis | class VirtualMachineFactory(factory.DjangoModelFactory): |
103 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.VirtualMachine |
104 | 672db045 | Christos Stavrakakis | |
105 | 672db045 | Christos Stavrakakis | name = factory.Sequence(prefix_seq('vm'))
|
106 | 672db045 | Christos Stavrakakis | userid = factory.Sequence(user_seq()) |
107 | 672db045 | Christos Stavrakakis | backend = factory.SubFactory(BackendFactory) |
108 | 672db045 | Christos Stavrakakis | imageid = '78491238479120243171243'
|
109 | 672db045 | Christos Stavrakakis | flavor = factory.SubFactory(FlavorFactory) |
110 | 672db045 | Christos Stavrakakis | deleted = False
|
111 | 672db045 | Christos Stavrakakis | suspended = False
|
112 | f32e8021 | Christos Stavrakakis | #operstate = factory.Sequence(round_seq_first(FACTORY_FOR.OPER_STATES))
|
113 | f32e8021 | Christos Stavrakakis | operstate = "STARTED"
|
114 | 672db045 | Christos Stavrakakis | |
115 | 672db045 | Christos Stavrakakis | |
116 | 672db045 | Christos Stavrakakis | class DeletedVirtualMachine(VirtualMachineFactory): |
117 | 672db045 | Christos Stavrakakis | deleted = True
|
118 | 672db045 | Christos Stavrakakis | |
119 | 672db045 | Christos Stavrakakis | |
120 | 672db045 | Christos Stavrakakis | class ErrorVirtualMachine(VirtualMachineFactory): |
121 | 672db045 | Christos Stavrakakis | operstate = "ERROR"
|
122 | 672db045 | Christos Stavrakakis | |
123 | 672db045 | Christos Stavrakakis | |
124 | 672db045 | Christos Stavrakakis | class BuildVirtualMachine(VirtualMachineFactory): |
125 | 672db045 | Christos Stavrakakis | operstate = "BUILD"
|
126 | 672db045 | Christos Stavrakakis | |
127 | 672db045 | Christos Stavrakakis | |
128 | 672db045 | Christos Stavrakakis | class DestroyedVirtualMachine(VirtualMachineFactory): |
129 | 672db045 | Christos Stavrakakis | operstate = "DESTROYED"
|
130 | 672db045 | Christos Stavrakakis | |
131 | 672db045 | Christos Stavrakakis | |
132 | 672db045 | Christos Stavrakakis | class StartedVirtualMachine(VirtualMachineFactory): |
133 | 672db045 | Christos Stavrakakis | operstate = "STARTED"
|
134 | 672db045 | Christos Stavrakakis | |
135 | 672db045 | Christos Stavrakakis | |
136 | 672db045 | Christos Stavrakakis | class StopedVirtualMachine(VirtualMachineFactory): |
137 | 672db045 | Christos Stavrakakis | operstate = "STOPED"
|
138 | 672db045 | Christos Stavrakakis | |
139 | 672db045 | Christos Stavrakakis | |
140 | d4325f42 | Christos Stavrakakis | class VirtualMachineMetadataFactory(factory.DjangoModelFactory): |
141 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.VirtualMachineMetadata |
142 | 672db045 | Christos Stavrakakis | |
143 | 672db045 | Christos Stavrakakis | meta_key = factory.Sequence(prefix_seq('key'))
|
144 | 672db045 | Christos Stavrakakis | meta_value = factory.Sequence(prefix_seq('pass'))
|
145 | 672db045 | Christos Stavrakakis | vm = factory.SubFactory(VirtualMachineFactory) |
146 | 672db045 | Christos Stavrakakis | |
147 | 672db045 | Christos Stavrakakis | |
148 | d4325f42 | Christos Stavrakakis | class NetworkFactory(factory.DjangoModelFactory): |
149 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.Network |
150 | 672db045 | Christos Stavrakakis | |
151 | 672db045 | Christos Stavrakakis | name = factory.Sequence(prefix_seq('network'))
|
152 | 672db045 | Christos Stavrakakis | userid = factory.Sequence(user_seq()) |
153 | 672db045 | Christos Stavrakakis | flavor = factory.Sequence(round_seq(models.Network.FLAVORS.keys())) |
154 | 672db045 | Christos Stavrakakis | mode = factory.LazyAttribute(lambda a:
|
155 | 672db045 | Christos Stavrakakis | models.Network.FLAVORS[a.flavor]['mode'])
|
156 | 672db045 | Christos Stavrakakis | link = factory.Sequence(prefix_seq('link'))
|
157 | 672db045 | Christos Stavrakakis | mac_prefix = 'aa:00:0'
|
158 | 672db045 | Christos Stavrakakis | tags = factory.LazyAttribute(lambda a:
|
159 | 672db045 | Christos Stavrakakis | models.Network.FLAVORS[a.flavor]['tags'])
|
160 | 672db045 | Christos Stavrakakis | public = False
|
161 | 672db045 | Christos Stavrakakis | deleted = False
|
162 | 8764d304 | Christos Stavrakakis | state = "ACTIVE"
|
163 | 672db045 | Christos Stavrakakis | |
164 | 672db045 | Christos Stavrakakis | |
165 | 672db045 | Christos Stavrakakis | class DeletedNetwork(NetworkFactory): |
166 | 672db045 | Christos Stavrakakis | deleted = True
|
167 | 672db045 | Christos Stavrakakis | |
168 | 672db045 | Christos Stavrakakis | |
169 | d4325f42 | Christos Stavrakakis | class BackendNetworkFactory(factory.DjangoModelFactory): |
170 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.BackendNetwork |
171 | 672db045 | Christos Stavrakakis | |
172 | f32e8021 | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory, state="ACTIVE")
|
173 | 672db045 | Christos Stavrakakis | backend = factory.SubFactory(BackendFactory) |
174 | 672db045 | Christos Stavrakakis | operstate = factory.Sequence(round_seq_first(FACTORY_FOR.OPER_STATES)) |
175 | 672db045 | Christos Stavrakakis | |
176 | 672db045 | Christos Stavrakakis | |
177 | d4325f42 | Christos Stavrakakis | class NetworkInterfaceFactory(factory.DjangoModelFactory): |
178 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.NetworkInterface |
179 | 672db045 | Christos Stavrakakis | |
180 | 0247388f | Christos Stavrakakis | name = factory.LazyAttribute(lambda self: random_string(30)) |
181 | f32e8021 | Christos Stavrakakis | machine = factory.SubFactory(VirtualMachineFactory, operstate="STARTED")
|
182 | f32e8021 | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory, state="ACTIVE")
|
183 | 672db045 | Christos Stavrakakis | index = factory.Sequence(lambda x: x, type=int) |
184 | 5aeb4e93 | Christos Stavrakakis | mac = factory.Sequence(lambda n: 'aa:{0}{0}:{0}{0}:aa:{0}{0}:{0}{0}' |
185 | 5aeb4e93 | Christos Stavrakakis | .format(hex(int(n) % 15)[2:3])) |
186 | 939d71dd | Christos Stavrakakis | state = "ACTIVE"
|
187 | 672db045 | Christos Stavrakakis | firewall_profile =\ |
188 | 672db045 | Christos Stavrakakis | factory.Sequence(round_seq_first(FACTORY_FOR.FIREWALL_PROFILES)) |
189 | 672db045 | Christos Stavrakakis | |
190 | 672db045 | Christos Stavrakakis | |
191 | 92d2d1ce | Christos Stavrakakis | class IPPoolTableFactory(factory.DjangoModelFactory): |
192 | 92d2d1ce | Christos Stavrakakis | FACTORY_FOR = models.IPPoolTable |
193 | 92d2d1ce | Christos Stavrakakis | |
194 | 92d2d1ce | Christos Stavrakakis | |
195 | 8764d304 | Christos Stavrakakis | class SubnetFactory(factory.DjangoModelFactory): |
196 | 0247388f | Christos Stavrakakis | FACTORY_FOR = models.Subnet |
197 | 92d2d1ce | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory, state="ACTIVE")
|
198 | 0247388f | Christos Stavrakakis | name = factory.LazyAttribute(lambda self: random_string(30)) |
199 | 0247388f | Christos Stavrakakis | dhcp = True
|
200 | 0247388f | Christos Stavrakakis | dns_nameservers = [] |
201 | 0247388f | Christos Stavrakakis | host_routes = [] |
202 | 8764d304 | Christos Stavrakakis | |
203 | 8764d304 | Christos Stavrakakis | |
204 | 8764d304 | Christos Stavrakakis | class IPv4SubnetFactory(SubnetFactory): |
205 | 8764d304 | Christos Stavrakakis | ipversion = 4
|
206 | 8764d304 | Christos Stavrakakis | cidr = factory.Sequence(lambda n: '192.168.{0}.0/24'.format(n)) |
207 | 8c7c9813 | Christos Stavrakakis | gateway = factory.LazyAttribute(lambda a: a.cidr[:-4] + '1') |
208 | 4445f97a | Dionysis Grigoropoulos | pool = factory.RelatedFactory(IPPoolTableFactory, 'subnet', base=cidr,
|
209 | 0711e5aa | Christos Stavrakakis | offset=2,
|
210 | 0711e5aa | Christos Stavrakakis | size=253)
|
211 | 0247388f | Christos Stavrakakis | |
212 | 0247388f | Christos Stavrakakis | |
213 | 8764d304 | Christos Stavrakakis | class IPv6SubnetFactory(SubnetFactory): |
214 | 0247388f | Christos Stavrakakis | ipversion = 6
|
215 | 0247388f | Christos Stavrakakis | cidr = "2001:648:2ffc:1112::/64"
|
216 | 0247388f | Christos Stavrakakis | gateway = None
|
217 | 0247388f | Christos Stavrakakis | |
218 | 0247388f | Christos Stavrakakis | |
219 | 8764d304 | Christos Stavrakakis | class NetworkWithSubnetFactory(NetworkFactory): |
220 | 8764d304 | Christos Stavrakakis | subnet = factory.RelatedFactory(IPv4SubnetFactory, 'network')
|
221 | 8764d304 | Christos Stavrakakis | subnet6 = factory.RelatedFactory(IPv6SubnetFactory, 'network')
|
222 | 8764d304 | Christos Stavrakakis | |
223 | 8764d304 | Christos Stavrakakis | |
224 | 0247388f | Christos Stavrakakis | class IPv4AddressFactory(factory.DjangoModelFactory): |
225 | 0247388f | Christos Stavrakakis | FACTORY_FOR = models.IPAddress |
226 | 0247388f | Christos Stavrakakis | |
227 | f32e8021 | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory, state="ACTIVE")
|
228 | 8764d304 | Christos Stavrakakis | subnet = factory.SubFactory(IPv4SubnetFactory, |
229 | 8764d304 | Christos Stavrakakis | network=factory.SelfAttribute('..network'))
|
230 | 0247388f | Christos Stavrakakis | address =\ |
231 | 0247388f | Christos Stavrakakis | factory.LazyAttributeSequence(lambda self, n: self.subnet.cidr[:-4] + |
232 | 0247388f | Christos Stavrakakis | '{0}'.format(int(n) + 2)) |
233 | 92d2d1ce | Christos Stavrakakis | nic = factory.SubFactory(NetworkInterfaceFactory, |
234 | 92d2d1ce | Christos Stavrakakis | network=factory.SelfAttribute('..network'))
|
235 | 92d2d1ce | Christos Stavrakakis | |
236 | 92d2d1ce | Christos Stavrakakis | |
237 | 92d2d1ce | Christos Stavrakakis | class IPv6AddressFactory(IPv4AddressFactory): |
238 | 92d2d1ce | Christos Stavrakakis | FACTORY_FOR = models.IPAddress |
239 | 92d2d1ce | Christos Stavrakakis | |
240 | 92d2d1ce | Christos Stavrakakis | subnet = factory.SubFactory(IPv6SubnetFactory) |
241 | f32e8021 | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory, state="ACTIVE")
|
242 | 92d2d1ce | Christos Stavrakakis | address = "babe::"
|
243 | 92d2d1ce | Christos Stavrakakis | nic = factory.SubFactory(NetworkInterfaceFactory, |
244 | 92d2d1ce | Christos Stavrakakis | network=factory.SelfAttribute('..network'))
|
245 | 0247388f | Christos Stavrakakis | |
246 | 0247388f | Christos Stavrakakis | |
247 | 0247388f | Christos Stavrakakis | class FloatingIPFactory(IPv4AddressFactory): |
248 | 08e6fe1b | Christos Stavrakakis | network = factory.SubFactory(NetworkFactory, public=True,
|
249 | f32e8021 | Christos Stavrakakis | floating_ip_pool=True, state="ACTIVE") |
250 | 0247388f | Christos Stavrakakis | floating_ip = True
|
251 | c2876228 | Christos Stavrakakis | |
252 | c2876228 | Christos Stavrakakis | |
253 | 593851e0 | Buildbot | class SecurityGroupFactory(factory.DjangoModelFactory): |
254 | 593851e0 | Buildbot | FACTORY_FOR = models.SecurityGroup |
255 | 593851e0 | Buildbot | |
256 | 593851e0 | Buildbot | name = factory.LazyAttribute(lambda self: random_string(30)) |
257 | 593851e0 | Buildbot | |
258 | 593851e0 | Buildbot | |
259 | d4325f42 | Christos Stavrakakis | class BridgePoolTableFactory(factory.DjangoModelFactory): |
260 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.BridgePoolTable |
261 | 672db045 | Christos Stavrakakis | |
262 | 672db045 | Christos Stavrakakis | size = 20
|
263 | 672db045 | Christos Stavrakakis | base = 'prv'
|
264 | 672db045 | Christos Stavrakakis | |
265 | 672db045 | Christos Stavrakakis | |
266 | d4325f42 | Christos Stavrakakis | class MacPrefixPoolTableFactory(factory.DjangoModelFactory): |
267 | 672db045 | Christos Stavrakakis | FACTORY_FOR = models.MacPrefixPoolTable |
268 | 672db045 | Christos Stavrakakis | size = 100
|
269 | 672db045 | Christos Stavrakakis | base = 'aa:00:0'
|
270 | d552dddd | Christos Stavrakakis | |
271 | d552dddd | Christos Stavrakakis | |
272 | d4325f42 | Christos Stavrakakis | class QuotaHolderSerialFactory(factory.DjangoModelFactory): |
273 | d552dddd | Christos Stavrakakis | FACTORY_FOR = models.QuotaHolderSerial |
274 | 41a7fae7 | Christos Stavrakakis | serial = factory.Sequence(lambda x: x, type=int) |