38 |
38 |
from snf_django.management.utils import parse_bool
|
39 |
39 |
|
40 |
40 |
from synnefo.db.models import Network, Backend
|
41 |
|
from synnefo.logic import networks
|
|
41 |
from synnefo.logic import networks, subnets
|
42 |
42 |
from synnefo.management import pprint
|
43 |
43 |
|
44 |
44 |
NETWORK_FLAVORS = Network.FLAVORS.keys()
|
... | ... | |
54 |
54 |
make_option(
|
55 |
55 |
'--name',
|
56 |
56 |
dest='name',
|
57 |
|
help="Name of network"),
|
|
57 |
help="Name of the network"),
|
|
58 |
make_option(
|
|
59 |
'--name4',
|
|
60 |
dest='name4',
|
|
61 |
help="Name of the IPv4 subnet"),
|
|
62 |
make_option(
|
|
63 |
'--name6',
|
|
64 |
dest='name6',
|
|
65 |
help="Name of the IPv6 subnet"),
|
58 |
66 |
make_option(
|
59 |
67 |
'--owner',
|
60 |
68 |
dest='owner',
|
... | ... | |
64 |
72 |
dest='subnet',
|
65 |
73 |
default=None,
|
66 |
74 |
# required=True,
|
67 |
|
help='Subnet of the network'),
|
|
75 |
help='IPv4 subnet of the network'),
|
68 |
76 |
make_option(
|
69 |
77 |
'--gateway',
|
70 |
78 |
dest='gateway',
|
71 |
79 |
default=None,
|
72 |
|
help='Gateway of the network'),
|
|
80 |
help='IPv4 gateway of the network'),
|
73 |
81 |
make_option(
|
74 |
82 |
'--subnet6',
|
75 |
83 |
dest='subnet6',
|
... | ... | |
88 |
96 |
metavar="True|False",
|
89 |
97 |
help='Automatically assign IPs'),
|
90 |
98 |
make_option(
|
|
99 |
'--slaac',
|
|
100 |
dest='slaac',
|
|
101 |
default="False",
|
|
102 |
choices=["True", "False"],
|
|
103 |
metavar="True|False",
|
|
104 |
help='Automatically assign IPs for the IPv6 subnet'),
|
|
105 |
make_option(
|
91 |
106 |
'--public',
|
92 |
107 |
dest='public',
|
93 |
108 |
action='store_true',
|
... | ... | |
142 |
157 |
raise CommandError("Command doesn't accept any arguments")
|
143 |
158 |
|
144 |
159 |
name = options['name']
|
|
160 |
name4 = options['name4']
|
|
161 |
name6 = options['name6']
|
145 |
162 |
subnet = options['subnet']
|
146 |
163 |
gateway = options['gateway']
|
147 |
164 |
subnet6 = options['subnet6']
|
... | ... | |
156 |
173 |
userid = options["owner"]
|
157 |
174 |
floating_ip_pool = parse_bool(options["floating_ip_pool"])
|
158 |
175 |
dhcp = parse_bool(options["dhcp"])
|
|
176 |
slaac = parse_bool(options["slaac"])
|
159 |
177 |
|
160 |
178 |
if name is None:
|
161 |
179 |
name = ""
|
... | ... | |
166 |
184 |
raise CommandError("subnet or subnet6 is required")
|
167 |
185 |
if subnet is None and gateway is not None:
|
168 |
186 |
raise CommandError("Cannot use gateway without subnet")
|
|
187 |
if subnet is None and dhcp is not None:
|
|
188 |
raise CommandError("Cannot use dhcp without subnet")
|
|
189 |
if subnet is None and name4 is not None:
|
|
190 |
raise CommandError("Cannot use name without subnet")
|
|
191 |
|
169 |
192 |
if subnet6 is None and gateway6 is not None:
|
170 |
193 |
raise CommandError("Cannot use gateway6 without subnet6")
|
|
194 |
if subnet6 is None and slaac is not None:
|
|
195 |
raise CommandError("Cannot use slaac without subnet6")
|
171 |
196 |
if public and not (backend_ids or floating_ip_pool):
|
172 |
197 |
raise CommandError("backend-ids is required")
|
|
198 |
if subnet6 is None and name6 is not None:
|
|
199 |
raise CommandError("Cannot use name6 without subnet6")
|
173 |
200 |
if not userid and not public:
|
174 |
201 |
raise CommandError("'owner' is required for private networks")
|
175 |
202 |
|
... | ... | |
188 |
215 |
backends.append(backend)
|
189 |
216 |
|
190 |
217 |
network = networks.create(userid=userid, name=name, flavor=flavor,
|
191 |
|
subnet=subnet, gateway=gateway,
|
192 |
|
subnet6=subnet6, gateway6=gateway6,
|
193 |
|
dhcp=dhcp, public=public, mode=mode,
|
|
218 |
public=public, mode=mode,
|
194 |
219 |
link=link, mac_prefix=mac_prefix, tags=tags,
|
195 |
220 |
floating_ip_pool=floating_ip_pool,
|
196 |
221 |
backends=backends, lazy_create=False)
|
197 |
222 |
|
|
223 |
sub4 = subnets._create_subnet(network.id, cidr=subnet, name=name4,
|
|
224 |
ipversion=4, gateway=gateway, dhcp=dhcp,
|
|
225 |
user_id=userid)
|
|
226 |
|
|
227 |
sub6 = subnets._create_subnet(network.id, cidr=subnet6, name=name6,
|
|
228 |
ipversion=6, gateway=gateway6,
|
|
229 |
dhcp=slaac, user_id=userid)
|
|
230 |
|
198 |
231 |
self.stdout.write("Created network '%s' in DB:\n" % network)
|
199 |
232 |
pprint.pprint_network(network, stdout=self.stdout)
|
200 |
233 |
pprint.pprint_network_subnets(network, stdout=self.stdout)
|