Revision 77fccdd4

b/snf-cyclades-app/synnefo/api/management/commands/server-create.py
49 49

  
50 50
    option_list = BaseCommand.option_list + (
51 51
            make_option("--backend-id", dest="backend_id",
52
                        help="The ID of the Ganeti backend"),
52
                        help="ID of the Ganeti backend"),
53 53
            make_option("--name", dest="name",
54 54
                        help="Name of the server."),
55 55
            make_option("--user-id", dest="user_id",
56
                        help="The owner of the server"),
57
            make_option("--image-id", dest="image_id"),
58
            make_option("--flavor-id", dest="flavor_id"),
59
            make_option("--password", dest="password")
56
                        help="ID of the Owner of the server."),
57
            make_option("--image-id", dest="image_id",
58
                        help="ID of the image."),
59
            make_option("--flavor-id", dest="flavor_id",
60
                        help="ID of the flavor"),
61
            make_option("--password", dest="password",
62
                        help="Password for the new server")
60 63
        )
61 64

  
62 65
    def handle(self, *args, **options):
63 66
        if args:
64 67
            raise CommandError("Command doesn't accept any arguments")
65 68

  
66

  
67 69
        name = options['name']
68 70
        user_id = options['user_id']
69 71
        backend_id = options['backend_id']
......
119 121
            if not backend:
120 122
                raise CommandError("Can not allocate VM")
121 123

  
122

  
123 124
        # Get Public address
124 125
        (network, address) = allocate_public_address(backend)
125 126
        if address is None:
b/snf-cyclades-app/synnefo/api/management/commands/server-show.py
42 42
class Command(BaseCommand):
43 43
    args = "<server ID>"
44 44
    help = "Show server info"
45
    
45

  
46 46
    def handle(self, *args, **options):
47 47
        if len(args) != 1:
48 48
            raise CommandError("Please provide a server ID")
49
        
49

  
50 50
        try:
51 51
            server_id = int(args[0])
52 52
            server = VirtualMachine.objects.get(id=server_id)
53 53
        except (ValueError, VirtualMachine.DoesNotExist):
54 54
            raise CommandError("Invalid server ID")
55
        
55

  
56 56
        flavor = '%s (%s)' % (server.flavor.id, server.flavor.name)
57
        image = '%s (%s)' % (server.imageid,
58
                        get_image(server.imageid, server.userid).get('name'))
59
        
57
        userid = server.userid
58

  
59
        imageid = server.imageid
60
        try:
61
            image_name = get_image(imageid, userid).get('name')
62
        except:
63
            image_name = "None"
64
        image = '%s (%s)' % (imageid, image_name)
65

  
60 66
        kv = {
61 67
            'id': server_id,
62 68
            'name': server.name,
63
            'owner': server.userid,
69
            'owner': userid,
64 70
            'created': format_date(server.created),
65 71
            'updated': format_date(server.updated),
66 72
            'image': image,
......
70 76
            'suspended': format_bool(server.suspended),
71 77
            'state': server.operstate
72 78
        }
73
        
79

  
74 80
        for key, val in sorted(kv.items()):
75 81
            line = '%s: %s\n' % (key.rjust(16), val)
76 82
            self.stdout.write(line.encode('utf8'))
b/snf-cyclades-app/synnefo/plankton/management/commands/image-list.py
1
# Copyright 2011-2012 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or without
4
# modification, are permitted provided that the following conditions
5
# are met:
6
#
7
#   1. Redistributions of source code must retain the above copyright
8
#      notice, this list of conditions and the following disclaimer.
9
#
10
#  2. Redistributions in binary form must reproduce the above copyright
11
#     notice, this list of conditions and the following disclaimer in the
12
#     documentation and/or other materials provided with the distribution.
13
#
14
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
15
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
18
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24
# SUCH DAMAGE.
25
#
26
# The views and conclusions contained in the software and documentation are
27
# those of the authors and should not be interpreted as representing official
28
# policies, either expressed or implied, of GRNET S.A.
29
#
30

  
31
from django.core.management.base import BaseCommand
32
from optparse import make_option
33

  
34
from synnefo.plankton.backend import ImageBackend
35

  
36

  
37
class Command(BaseCommand):
38
    option_list = BaseCommand.option_list + (
39
        make_option('--user-id', dest='userid',
40
            help="List all images available to that user"),
41
        )
42

  
43
    def handle(self, **options):
44
        userid = options['userid']
45
        write = self.stdout.write
46

  
47
        c = ImageBackend(userid) if userid else ImageBackend("")
48
        images = c.list()
49
        images.sort(key=lambda x: x['created_at'], reverse=True)
50

  
51
        fields = ("id", "name", "owner", "public")
52
        columns = (40, 30, 30, 7)
53
        sep = "-" * 107
54
        line = "".join(f.rjust(c) for f, c in zip(fields, columns))
55
        write(line + "\n")
56
        write(sep + "\n")
57
        for img in images:
58
            fields = (img["id"], img["name"], img["owner"], img["is_public"])
59
            line = "".join(str(f).rjust(c) for f, c in zip(fields, columns))
60
            write(line + "\n")
b/snf-cyclades-app/synnefo/plankton/management/commands/image-show.py
1
# Copyright 2012 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or without
4
# modification, are permitted provided that the following conditions
5
# are met:
6
#
7
#   1. Redistributions of source code must retain the above copyright
8
#      notice, this list of conditions and the following disclaimer.
9
#
10
#  2. Redistributions in binary form must reproduce the above copyright
11
#     notice, this list of conditions and the following disclaimer in the
12
#     documentation and/or other materials provided with the distribution.
13
#
14
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
15
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
18
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24
# SUCH DAMAGE.
25
#
26
# The views and conclusions contained in the software and documentation are
27
# those of the authors and should not be interpreted as representing official
28
# policies, either expressed or implied, of GRNET S.A.
29
#
30

  
31
from django.core.management.base import BaseCommand, CommandError
32

  
33
from synnefo.plankton.backend import ImageBackend
34
from pprint import pprint
35

  
36

  
37
class Command(BaseCommand):
38
    args = "<image_id>"
39

  
40
    def handle(self, *args, **options):
41

  
42
        if len(args) != 1:
43
            raise CommandError("Please provide an image ID")
44
        image_id = args[0]
45

  
46
        c = ImageBackend("")
47

  
48
        image = c.get_image(image_id)
49
        if not image:
50
            raise CommandError("Image not Found")
51

  
52
        pprint(image, stream=self.stdout)

Also available in: Unified diff