Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / api / management / commands / showserver.py @ 6dd70a5c

History | View | Annotate | Download (3 kB)

1 11300d7b Giorgos Verigakis
# Copyright 2012 GRNET S.A. All rights reserved.
2 11300d7b Giorgos Verigakis
#
3 11300d7b Giorgos Verigakis
# Redistribution and use in source and binary forms, with or
4 11300d7b Giorgos Verigakis
# without modification, are permitted provided that the following
5 11300d7b Giorgos Verigakis
# conditions are met:
6 11300d7b Giorgos Verigakis
#
7 11300d7b Giorgos Verigakis
#   1. Redistributions of source code must retain the above
8 11300d7b Giorgos Verigakis
#      copyright notice, this list of conditions and the following
9 11300d7b Giorgos Verigakis
#      disclaimer.
10 11300d7b Giorgos Verigakis
#
11 11300d7b Giorgos Verigakis
#   2. Redistributions in binary form must reproduce the above
12 11300d7b Giorgos Verigakis
#      copyright notice, this list of conditions and the following
13 11300d7b Giorgos Verigakis
#      disclaimer in the documentation and/or other materials
14 11300d7b Giorgos Verigakis
#      provided with the distribution.
15 11300d7b Giorgos Verigakis
#
16 11300d7b Giorgos Verigakis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 11300d7b Giorgos Verigakis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 11300d7b Giorgos Verigakis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 11300d7b Giorgos Verigakis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 11300d7b Giorgos Verigakis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 11300d7b Giorgos Verigakis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 11300d7b Giorgos Verigakis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 11300d7b Giorgos Verigakis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 11300d7b Giorgos Verigakis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 11300d7b Giorgos Verigakis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 11300d7b Giorgos Verigakis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 11300d7b Giorgos Verigakis
# POSSIBILITY OF SUCH DAMAGE.
28 11300d7b Giorgos Verigakis
#
29 11300d7b Giorgos Verigakis
# The views and conclusions contained in the software and
30 11300d7b Giorgos Verigakis
# documentation are those of the authors and should not be
31 11300d7b Giorgos Verigakis
# interpreted as representing official policies, either expressed
32 11300d7b Giorgos Verigakis
# or implied, of GRNET S.A.
33 11300d7b Giorgos Verigakis
34 11300d7b Giorgos Verigakis
from django.core.management.base import BaseCommand, CommandError
35 11300d7b Giorgos Verigakis
36 11300d7b Giorgos Verigakis
from synnefo.api.util import get_image
37 11300d7b Giorgos Verigakis
from synnefo.db.models import VirtualMachine
38 11300d7b Giorgos Verigakis
39 11300d7b Giorgos Verigakis
from ._common import format_bool, format_date
40 11300d7b Giorgos Verigakis
41 11300d7b Giorgos Verigakis
42 11300d7b Giorgos Verigakis
class Command(BaseCommand):
43 11300d7b Giorgos Verigakis
    args = "<server ID>"
44 11300d7b Giorgos Verigakis
    help = "Show server info"
45 11300d7b Giorgos Verigakis
    
46 11300d7b Giorgos Verigakis
    def handle(self, *args, **options):
47 11300d7b Giorgos Verigakis
        if len(args) != 1:
48 11300d7b Giorgos Verigakis
            raise CommandError("Please provide a server ID")
49 11300d7b Giorgos Verigakis
        
50 11300d7b Giorgos Verigakis
        try:
51 11300d7b Giorgos Verigakis
            server_id = int(args[0])
52 11300d7b Giorgos Verigakis
            server = VirtualMachine.objects.get(id=server_id)
53 11300d7b Giorgos Verigakis
        except (ValueError, VirtualMachine.DoesNotExist):
54 11300d7b Giorgos Verigakis
            raise CommandError("Invalid server ID")
55 11300d7b Giorgos Verigakis
        
56 11300d7b Giorgos Verigakis
        flavor = '%s (%s)' % (server.flavor.id, server.flavor.name)
57 11300d7b Giorgos Verigakis
        image = '%s (%s)' % (server.imageid,
58 11300d7b Giorgos Verigakis
                        get_image(server.imageid, server.userid).get('name'))
59 11300d7b Giorgos Verigakis
        
60 11300d7b Giorgos Verigakis
        kv = {
61 11300d7b Giorgos Verigakis
            'id': server_id,
62 11300d7b Giorgos Verigakis
            'name': server.name,
63 11300d7b Giorgos Verigakis
            'owner': server.userid,
64 11300d7b Giorgos Verigakis
            'created': format_date(server.created),
65 11300d7b Giorgos Verigakis
            'updated': format_date(server.updated),
66 11300d7b Giorgos Verigakis
            'image': image,
67 11300d7b Giorgos Verigakis
            'host id': server.hostid,
68 11300d7b Giorgos Verigakis
            'flavor': flavor,
69 11300d7b Giorgos Verigakis
            'deleted': format_bool(server.deleted),
70 11300d7b Giorgos Verigakis
            'suspended': format_bool(server.suspended),
71 11300d7b Giorgos Verigakis
            'state': server.operstate
72 11300d7b Giorgos Verigakis
        }
73 11300d7b Giorgos Verigakis
        
74 11300d7b Giorgos Verigakis
        for key, val in sorted(kv.items()):
75 11300d7b Giorgos Verigakis
            line = '%s: %s\n' % (key.rjust(16), val)
76 11300d7b Giorgos Verigakis
            self.stdout.write(line.encode('utf8'))