Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / logic / management / commands / server-inspect.py @ 475d4a85

History | View | Annotate | Download (2.8 kB)

1 8b178e6b Christos Stavrakakis
# Copyright 2012-2013 GRNET S.A. All rights reserved.
2 00051a6a Christos Stavrakakis
#
3 00051a6a Christos Stavrakakis
# Redistribution and use in source and binary forms, with or
4 00051a6a Christos Stavrakakis
# without modification, are permitted provided that the following
5 00051a6a Christos Stavrakakis
# conditions are met:
6 00051a6a Christos Stavrakakis
#
7 00051a6a Christos Stavrakakis
#   1. Redistributions of source code must retain the above
8 00051a6a Christos Stavrakakis
#      copyright notice, this list of conditions and the following
9 00051a6a Christos Stavrakakis
#      disclaimer.
10 00051a6a Christos Stavrakakis
#
11 00051a6a Christos Stavrakakis
#   2. Redistributions in binary form must reproduce the above
12 00051a6a Christos Stavrakakis
#      copyright notice, this list of conditions and the following
13 00051a6a Christos Stavrakakis
#      disclaimer in the documentation and/or other materials
14 00051a6a Christos Stavrakakis
#      provided with the distribution.
15 00051a6a Christos Stavrakakis
#
16 00051a6a Christos Stavrakakis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 00051a6a Christos Stavrakakis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 00051a6a Christos Stavrakakis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 00051a6a Christos Stavrakakis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 00051a6a Christos Stavrakakis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 00051a6a Christos Stavrakakis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 00051a6a Christos Stavrakakis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 00051a6a Christos Stavrakakis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 00051a6a Christos Stavrakakis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 00051a6a Christos Stavrakakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 00051a6a Christos Stavrakakis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 00051a6a Christos Stavrakakis
# POSSIBILITY OF SUCH DAMAGE.
28 00051a6a Christos Stavrakakis
#
29 00051a6a Christos Stavrakakis
# The views and conclusions contained in the software and
30 00051a6a Christos Stavrakakis
# documentation are those of the authors and should not be
31 00051a6a Christos Stavrakakis
# interpreted as representing official policies, either expressed
32 00051a6a Christos Stavrakakis
# or implied, of GRNET S.A.
33 00051a6a Christos Stavrakakis
34 00051a6a Christos Stavrakakis
from optparse import make_option
35 00051a6a Christos Stavrakakis
from django.core.management.base import BaseCommand, CommandError
36 00051a6a Christos Stavrakakis
37 b84ed662 Christos Stavrakakis
from synnefo.management import common
38 8b178e6b Christos Stavrakakis
from synnefo.management import pprint
39 00051a6a Christos Stavrakakis
40 00051a6a Christos Stavrakakis
41 00051a6a Christos Stavrakakis
class Command(BaseCommand):
42 00051a6a Christos Stavrakakis
    help = "Inspect a server on DB and Ganeti"
43 b84ed662 Christos Stavrakakis
    args = "<server ID>"
44 00051a6a Christos Stavrakakis
45 00051a6a Christos Stavrakakis
    option_list = BaseCommand.option_list + (
46 9621c777 Christos Stavrakakis
        make_option(
47 9621c777 Christos Stavrakakis
            '--jobs',
48 c51f3a08 Stratos Psomadakis
            action='store_true',
49 c51f3a08 Stratos Psomadakis
            dest='jobs',
50 c51f3a08 Stratos Psomadakis
            default=False,
51 c51f3a08 Stratos Psomadakis
            help="Show non-archived jobs concerning server."),
52 9621c777 Christos Stavrakakis
        make_option(
53 e6c4bd78 Christos Stavrakakis
            '--displayname',
54 c51f3a08 Stratos Psomadakis
            action='store_true',
55 4500650c Stratos Psomadakis
            dest='displayname',
56 c51f3a08 Stratos Psomadakis
            default=False,
57 4500650c Stratos Psomadakis
            help="Display both uuid and display name"),
58 00051a6a Christos Stavrakakis
    )
59 00051a6a Christos Stavrakakis
60 00051a6a Christos Stavrakakis
    def handle(self, *args, **options):
61 00051a6a Christos Stavrakakis
        if len(args) != 1:
62 00051a6a Christos Stavrakakis
            raise CommandError("Please provide a server ID")
63 00051a6a Christos Stavrakakis
64 b84ed662 Christos Stavrakakis
        vm = common.get_vm(args[0])
65 00051a6a Christos Stavrakakis
66 4500650c Stratos Psomadakis
        displayname = options['displayname']
67 4500650c Stratos Psomadakis
68 8b178e6b Christos Stavrakakis
        pprint.pprint_server(vm, display_mails=displayname, stdout=self.stdout)
69 8b178e6b Christos Stavrakakis
        self.stdout.write("\n")
70 8b178e6b Christos Stavrakakis
        pprint.pprint_server_nics(vm, stdout=self.stdout)
71 8b178e6b Christos Stavrakakis
        self.stdout.write("\n")
72 8b178e6b Christos Stavrakakis
        pprint.pprint_server_in_ganeti(vm, print_jobs=options["jobs"],
73 8b178e6b Christos Stavrakakis
                                       stdout=self.stdout)
74 8b178e6b Christos Stavrakakis
        self.stdout.write("\n")