Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / api / management / commands / floating-ip-remove.py @ a11d17d6

History | View | Annotate | Download (2.6 kB)

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