Statistics
| Branch: | Tag: | Revision:

root / snf-cyclades-app / synnefo / api / management / commands / server-show.py @ 225cea18

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 225cea18 Christos Stavrakakis
from synnefo.webproject.management.util import format_bool, format_date
36 225cea18 Christos Stavrakakis
from synnefo.management.common import (format_vm_state, get_vm,
37 8283d6c1 Stratos Psomadakis
                                       get_image, UserCache)
38 11300d7b Giorgos Verigakis
39 11300d7b Giorgos Verigakis
40 11300d7b Giorgos Verigakis
class Command(BaseCommand):
41 11300d7b Giorgos Verigakis
    args = "<server ID>"
42 11300d7b Giorgos Verigakis
    help = "Show server info"
43 77fccdd4 Christos Stavrakakis
44 11300d7b Giorgos Verigakis
    def handle(self, *args, **options):
45 11300d7b Giorgos Verigakis
        if len(args) != 1:
46 11300d7b Giorgos Verigakis
            raise CommandError("Please provide a server ID")
47 77fccdd4 Christos Stavrakakis
48 b84ed662 Christos Stavrakakis
        server = get_vm(args[0])
49 77fccdd4 Christos Stavrakakis
50 11300d7b Giorgos Verigakis
        flavor = '%s (%s)' % (server.flavor.id, server.flavor.name)
51 77fccdd4 Christos Stavrakakis
        userid = server.userid
52 77fccdd4 Christos Stavrakakis
53 77fccdd4 Christos Stavrakakis
        imageid = server.imageid
54 77fccdd4 Christos Stavrakakis
        try:
55 77fccdd4 Christos Stavrakakis
            image_name = get_image(imageid, userid).get('name')
56 77fccdd4 Christos Stavrakakis
        except:
57 77fccdd4 Christos Stavrakakis
            image_name = "None"
58 77fccdd4 Christos Stavrakakis
        image = '%s (%s)' % (imageid, image_name)
59 77fccdd4 Christos Stavrakakis
60 11300d7b Giorgos Verigakis
        kv = {
61 b84ed662 Christos Stavrakakis
            'id': server.id,
62 11300d7b Giorgos Verigakis
            'name': server.name,
63 8814e07c Christos Stavrakakis
            'owner_uuid': userid,
64 8283d6c1 Stratos Psomadakis
            'owner_name': UserCache().get_name(userid),
65 11300d7b Giorgos Verigakis
            'created': format_date(server.created),
66 11300d7b Giorgos Verigakis
            'updated': format_date(server.updated),
67 11300d7b Giorgos Verigakis
            'image': image,
68 11300d7b Giorgos Verigakis
            'host id': server.hostid,
69 11300d7b Giorgos Verigakis
            'flavor': flavor,
70 11300d7b Giorgos Verigakis
            'deleted': format_bool(server.deleted),
71 11300d7b Giorgos Verigakis
            'suspended': format_bool(server.suspended),
72 8283d6c1 Stratos Psomadakis
            'state': format_vm_state(server),
73 11300d7b Giorgos Verigakis
        }
74 77fccdd4 Christos Stavrakakis
75 11300d7b Giorgos Verigakis
        for key, val in sorted(kv.items()):
76 11300d7b Giorgos Verigakis
            line = '%s: %s\n' % (key.rjust(16), val)
77 11300d7b Giorgos Verigakis
            self.stdout.write(line.encode('utf8'))