Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / logic / management / commands / network-remove.py @ a6e6fe48

History | View | Annotate | Download (2.8 kB)

1 a6e6fe48 Christos Stavrakakis
# Copyright 2011-2014 GRNET S.A. All rights reserved.
2 7fede91e Christos Stavrakakis
#
3 7fede91e Christos Stavrakakis
# Redistribution and use in source and binary forms, with or without
4 7fede91e Christos Stavrakakis
# modification, are permitted provided that the following conditions
5 7fede91e Christos Stavrakakis
# are met:
6 7fede91e Christos Stavrakakis
#
7 7fede91e Christos Stavrakakis
#   1. Redistributions of source code must retain the above copyright
8 7fede91e Christos Stavrakakis
#      notice, this list of conditions and the following disclaimer.
9 7fede91e Christos Stavrakakis
#
10 7fede91e Christos Stavrakakis
#  2. Redistributions in binary form must reproduce the above copyright
11 7fede91e Christos Stavrakakis
#     notice, this list of conditions and the following disclaimer in the
12 7fede91e Christos Stavrakakis
#     documentation and/or other materials provided with the distribution.
13 7fede91e Christos Stavrakakis
#
14 7fede91e Christos Stavrakakis
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
15 7fede91e Christos Stavrakakis
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 7fede91e Christos Stavrakakis
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 7fede91e Christos Stavrakakis
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
18 7fede91e Christos Stavrakakis
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 7fede91e Christos Stavrakakis
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 7fede91e Christos Stavrakakis
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 7fede91e Christos Stavrakakis
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 7fede91e Christos Stavrakakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 7fede91e Christos Stavrakakis
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 7fede91e Christos Stavrakakis
# SUCH DAMAGE.
25 7fede91e Christos Stavrakakis
#
26 7fede91e Christos Stavrakakis
# The views and conclusions contained in the software and documentation are
27 7fede91e Christos Stavrakakis
# those of the authors and should not be interpreted as representing official
28 7fede91e Christos Stavrakakis
# policies, either expressed or implied, of GRNET S.A.
29 7fede91e Christos Stavrakakis
#
30 7fede91e Christos Stavrakakis
31 0f89715b Dionysis Grigoropoulos
from django.core.management.base import CommandError
32 0f89715b Dionysis Grigoropoulos
from snf_django.management.commands import RemoveCommand
33 20fc5c41 Dionysis Grigoropoulos
from snf_django.lib.api import faults
34 b47f167a Christos Stavrakakis
from synnefo.logic import networks
35 a6e6fe48 Christos Stavrakakis
from synnefo.management import common
36 7fede91e Christos Stavrakakis
37 7fede91e Christos Stavrakakis
38 0f89715b Dionysis Grigoropoulos
class Command(RemoveCommand):
39 7fede91e Christos Stavrakakis
    can_import_settings = True
40 2bd38823 Dionysis Grigoropoulos
    args = "<Network ID> [<Network ID> ...]"
41 7fede91e Christos Stavrakakis
    help = "Remove a network from the Database, and Ganeti"
42 7fede91e Christos Stavrakakis
43 a6e6fe48 Christos Stavrakakis
    @common.convert_api_faults
44 7fede91e Christos Stavrakakis
    def handle(self, *args, **options):
45 20fc5c41 Dionysis Grigoropoulos
        if not args:
46 7fede91e Christos Stavrakakis
            raise CommandError("Please provide a network ID")
47 7fede91e Christos Stavrakakis
48 0f89715b Dionysis Grigoropoulos
        force = options['force']
49 d27b16cc Dionysis Grigoropoulos
        message = "networks" if len(args) > 1 else "network"
50 d27b16cc Dionysis Grigoropoulos
        self.confirm_deletion(force, message, args)
51 0f89715b Dionysis Grigoropoulos
52 20fc5c41 Dionysis Grigoropoulos
        for network_id in args:
53 20fc5c41 Dionysis Grigoropoulos
            self.stdout.write("\n")
54 20fc5c41 Dionysis Grigoropoulos
            try:
55 a6e6fe48 Christos Stavrakakis
                network = common.get_resource("network", network_id,
56 a6e6fe48 Christos Stavrakakis
                                              for_update=True)
57 20fc5c41 Dionysis Grigoropoulos
                self.stdout.write('Removing network: %s\n' %
58 20fc5c41 Dionysis Grigoropoulos
                                  network.backend_id)
59 7fede91e Christos Stavrakakis
60 20fc5c41 Dionysis Grigoropoulos
                networks.delete(network)
61 7fede91e Christos Stavrakakis
62 20fc5c41 Dionysis Grigoropoulos
                self.stdout.write("Successfully submitted Ganeti jobs to"
63 20fc5c41 Dionysis Grigoropoulos
                                  " remove network %s\n" % network.backend_id)
64 20fc5c41 Dionysis Grigoropoulos
            except (CommandError, faults.BadRequest) as e:
65 20fc5c41 Dionysis Grigoropoulos
                self.stdout.write("Error -- %s\n" % e.message)