root / snf-cyclades-app / synnefo / api / management / commands / subnet-list.py @ 9835a70d
History | View | Annotate | Download (3.5 kB)
1 | bf42a16c | Dionysis Grigoropoulos | # Copyright 2013 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | bf42a16c | Dionysis Grigoropoulos | #
|
3 | bf42a16c | Dionysis Grigoropoulos | # Redistribution and use in source and binary forms, with or
|
4 | bf42a16c | Dionysis Grigoropoulos | # without modification, are permitted provided that the following
|
5 | bf42a16c | Dionysis Grigoropoulos | # conditions are met:
|
6 | bf42a16c | Dionysis Grigoropoulos | #
|
7 | bf42a16c | Dionysis Grigoropoulos | # 1. Redistributions of source code must retain the above
|
8 | bf42a16c | Dionysis Grigoropoulos | # copyright notice, this list of conditions and the following
|
9 | bf42a16c | Dionysis Grigoropoulos | # disclaimer.
|
10 | bf42a16c | Dionysis Grigoropoulos | #
|
11 | bf42a16c | Dionysis Grigoropoulos | # 2. Redistributions in binary form must reproduce the above
|
12 | bf42a16c | Dionysis Grigoropoulos | # copyright notice, this list of conditions and the following
|
13 | bf42a16c | Dionysis Grigoropoulos | # disclaimer in the documentation and/or other materials
|
14 | bf42a16c | Dionysis Grigoropoulos | # provided with the distribution.
|
15 | bf42a16c | Dionysis Grigoropoulos | #
|
16 | bf42a16c | Dionysis Grigoropoulos | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS"" AND ANY EXPRESS
|
17 | bf42a16c | Dionysis Grigoropoulos | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | bf42a16c | Dionysis Grigoropoulos | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | bf42a16c | Dionysis Grigoropoulos | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | bf42a16c | Dionysis Grigoropoulos | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | bf42a16c | Dionysis Grigoropoulos | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | bf42a16c | Dionysis Grigoropoulos | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | bf42a16c | Dionysis Grigoropoulos | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | bf42a16c | Dionysis Grigoropoulos | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | bf42a16c | Dionysis Grigoropoulos | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | bf42a16c | Dionysis Grigoropoulos | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | bf42a16c | Dionysis Grigoropoulos | # POSSIBILITY OF SUCH DAMAGE.
|
28 | bf42a16c | Dionysis Grigoropoulos | #
|
29 | bf42a16c | Dionysis Grigoropoulos | # The views and conclusions contained in the software and
|
30 | bf42a16c | Dionysis Grigoropoulos | # documentation are those of the authors and should not be
|
31 | bf42a16c | Dionysis Grigoropoulos | # interpreted as representing official policies, either expressed
|
32 | bf42a16c | Dionysis Grigoropoulos | # or implied, of GRNET S.A.
|
33 | bf42a16c | Dionysis Grigoropoulos | |
34 | bf42a16c | Dionysis Grigoropoulos | from optparse import make_option |
35 | bf42a16c | Dionysis Grigoropoulos | |
36 | 6f99f94f | Dionysis Grigoropoulos | from snf_django.management.commands import ListCommand, CommandError |
37 | bf42a16c | Dionysis Grigoropoulos | from synnefo.settings import (CYCLADES_SERVICE_TOKEN as ASTAKOS_TOKEN, |
38 | 9835a70d | Christos Stavrakakis | ASTAKOS_AUTH_URL) |
39 | 53162472 | Christos Stavrakakis | from synnefo.db.models import Subnet |
40 | 6f99f94f | Dionysis Grigoropoulos | |
41 | bf42a16c | Dionysis Grigoropoulos | from logging import getLogger |
42 | bf42a16c | Dionysis Grigoropoulos | log = getLogger(__name__) |
43 | bf42a16c | Dionysis Grigoropoulos | |
44 | bf42a16c | Dionysis Grigoropoulos | |
45 | bf42a16c | Dionysis Grigoropoulos | class Command(ListCommand): |
46 | bf42a16c | Dionysis Grigoropoulos | help = "List subnets"
|
47 | bf42a16c | Dionysis Grigoropoulos | |
48 | bf42a16c | Dionysis Grigoropoulos | option_list = ListCommand.option_list + ( |
49 | bf42a16c | Dionysis Grigoropoulos | make_option( |
50 | bf42a16c | Dionysis Grigoropoulos | "--ipv4",
|
51 | bf42a16c | Dionysis Grigoropoulos | action="store_true",
|
52 | bf42a16c | Dionysis Grigoropoulos | dest="ipv4",
|
53 | bf42a16c | Dionysis Grigoropoulos | default=False,
|
54 | bf42a16c | Dionysis Grigoropoulos | help="List only IPv4 subnets"),
|
55 | bf42a16c | Dionysis Grigoropoulos | make_option( |
56 | bf42a16c | Dionysis Grigoropoulos | "--ipv6",
|
57 | bf42a16c | Dionysis Grigoropoulos | action="store_true",
|
58 | bf42a16c | Dionysis Grigoropoulos | dest="ipv6",
|
59 | bf42a16c | Dionysis Grigoropoulos | default=False,
|
60 | bf42a16c | Dionysis Grigoropoulos | help="List only IPv6 subnets"),
|
61 | bf42a16c | Dionysis Grigoropoulos | make_option( |
62 | bf42a16c | Dionysis Grigoropoulos | "--dhcp",
|
63 | bf42a16c | Dionysis Grigoropoulos | action="store_true",
|
64 | bf42a16c | Dionysis Grigoropoulos | dest="dhcp",
|
65 | bf42a16c | Dionysis Grigoropoulos | default=False,
|
66 | bf42a16c | Dionysis Grigoropoulos | help="List only subnets that have DHCP/SLAC enabled"),
|
67 | bf42a16c | Dionysis Grigoropoulos | ) |
68 | bf42a16c | Dionysis Grigoropoulos | |
69 | bf42a16c | Dionysis Grigoropoulos | object_class = Subnet |
70 | 9835a70d | Christos Stavrakakis | astakos_url = ASTAKOS_AUTH_URL |
71 | bf42a16c | Dionysis Grigoropoulos | astakos_token = ASTAKOS_TOKEN |
72 | bf42a16c | Dionysis Grigoropoulos | |
73 | bf42a16c | Dionysis Grigoropoulos | FIELDS = { |
74 | bf42a16c | Dionysis Grigoropoulos | "id": ("id", "ID of the subnet"), |
75 | 53162472 | Christos Stavrakakis | "network": ("network_id", "ID of the network the subnet belongs to"), |
76 | bf42a16c | Dionysis Grigoropoulos | "name": ("name", "Name of the subnet"), |
77 | 53162472 | Christos Stavrakakis | "user.uuid": ("network.userid", "The UUID of the subnet's owner"), |
78 | bf42a16c | Dionysis Grigoropoulos | "cidr": ("cidr", "The CIDR of the subnet"), |
79 | bf42a16c | Dionysis Grigoropoulos | "ipversion": ("ipversion", "The IP version of the subnet"), |
80 | 6f99f94f | Dionysis Grigoropoulos | "gateway": ("gateway", "The gateway IP of the subnet"), |
81 | 6f99f94f | Dionysis Grigoropoulos | "dhcp": ("dhcp", "DHCP flag of the subnet"), |
82 | bf42a16c | Dionysis Grigoropoulos | } |
83 | bf42a16c | Dionysis Grigoropoulos | |
84 | 6f99f94f | Dionysis Grigoropoulos | fields = ["id", "network", "name", "user.uuid", "cidr", "ipversion", |
85 | 6f99f94f | Dionysis Grigoropoulos | "gateway", "dhcp"] |
86 | bf42a16c | Dionysis Grigoropoulos | |
87 | bf42a16c | Dionysis Grigoropoulos | def handle_args(self, *args, **options): |
88 | bf42a16c | Dionysis Grigoropoulos | if options["ipv4"] and options["ipv6"]: |
89 | bf42a16c | Dionysis Grigoropoulos | raise CommandError("Use either --ipv4 or --ipv6, not both") |
90 | bf42a16c | Dionysis Grigoropoulos | |
91 | bf42a16c | Dionysis Grigoropoulos | if options["ipv4"]: |
92 | bf42a16c | Dionysis Grigoropoulos | self.filters["ipversion"] = 4 |
93 | bf42a16c | Dionysis Grigoropoulos | |
94 | bf42a16c | Dionysis Grigoropoulos | if options["ipv6"]: |
95 | bf42a16c | Dionysis Grigoropoulos | self.filters["ipversion"] = 6 |
96 | bf42a16c | Dionysis Grigoropoulos | |
97 | 6f99f94f | Dionysis Grigoropoulos | if options["dhcp"]: |
98 | bf42a16c | Dionysis Grigoropoulos | self.filters["dhcp"] = True |