Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / management / commands / resource-add.py @ 398a9604

History | View | Annotate | Download (2.4 kB)

1 8e45d6fd Sofia Papagiannaki
# Copyright 2012 GRNET S.A. All rights reserved.
2 8e45d6fd Sofia Papagiannaki
#
3 8e45d6fd Sofia Papagiannaki
# Redistribution and use in source and binary forms, with or
4 8e45d6fd Sofia Papagiannaki
# without modification, are permitted provided that the following
5 8e45d6fd Sofia Papagiannaki
# conditions are met:
6 8e45d6fd Sofia Papagiannaki
#
7 8e45d6fd Sofia Papagiannaki
#   1. Redistributions of source code must retain the above
8 8e45d6fd Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
9 8e45d6fd Sofia Papagiannaki
#      disclaimer.
10 8e45d6fd Sofia Papagiannaki
#
11 8e45d6fd Sofia Papagiannaki
#   2. Redistributions in binary form must reproduce the above
12 8e45d6fd Sofia Papagiannaki
#      copyright notice, this list of conditions and the following
13 8e45d6fd Sofia Papagiannaki
#      disclaimer in the documentation and/or other materials
14 8e45d6fd Sofia Papagiannaki
#      provided with the distribution.
15 8e45d6fd Sofia Papagiannaki
#
16 8e45d6fd Sofia Papagiannaki
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 8e45d6fd Sofia Papagiannaki
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 8e45d6fd Sofia Papagiannaki
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 8e45d6fd Sofia Papagiannaki
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 8e45d6fd Sofia Papagiannaki
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 8e45d6fd Sofia Papagiannaki
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 8e45d6fd Sofia Papagiannaki
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 8e45d6fd Sofia Papagiannaki
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 8e45d6fd Sofia Papagiannaki
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 8e45d6fd Sofia Papagiannaki
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 8e45d6fd Sofia Papagiannaki
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 8e45d6fd Sofia Papagiannaki
# POSSIBILITY OF SUCH DAMAGE.
28 8e45d6fd Sofia Papagiannaki
#
29 8e45d6fd Sofia Papagiannaki
# The views and conclusions contained in the software and
30 8e45d6fd Sofia Papagiannaki
# documentation are those of the authors and should not be
31 8e45d6fd Sofia Papagiannaki
# interpreted as representing official policies, either expressed
32 8e45d6fd Sofia Papagiannaki
# or implied, of GRNET S.A.
33 8e45d6fd Sofia Papagiannaki
34 8e45d6fd Sofia Papagiannaki
from django.core.management.base import BaseCommand, CommandError
35 8e45d6fd Sofia Papagiannaki
from django.db.utils import IntegrityError
36 8e45d6fd Sofia Papagiannaki
37 aab4d540 Sofia Papagiannaki
from astakos.im.models import Resource, Service
38 8e45d6fd Sofia Papagiannaki
39 5ce3ce4f Sofia Papagiannaki
40 8e45d6fd Sofia Papagiannaki
class Command(BaseCommand):
41 9a06d96f Olga Brani
    args = "<service> <resource> <desc> <unit>"
42 8e45d6fd Sofia Papagiannaki
    help = "Add a resource"
43 5ce3ce4f Sofia Papagiannaki
44 8e45d6fd Sofia Papagiannaki
    def handle(self, *args, **options):
45 8e45d6fd Sofia Papagiannaki
        if len(args) < 2:
46 8e45d6fd Sofia Papagiannaki
            raise CommandError("Invalid number of arguments")
47 5ce3ce4f Sofia Papagiannaki
48 8e45d6fd Sofia Papagiannaki
        service_name = args[0]
49 8e45d6fd Sofia Papagiannaki
        resource_name = args[1]
50 5ce3ce4f Sofia Papagiannaki
51 8e45d6fd Sofia Papagiannaki
        try:
52 8e45d6fd Sofia Papagiannaki
            service = Service.objects.get(name=service_name)
53 8e45d6fd Sofia Papagiannaki
        except Service.DoesNotExist:
54 8e45d6fd Sofia Papagiannaki
            raise CommandError("Invalid service name")
55 8e45d6fd Sofia Papagiannaki
        else:
56 8e45d6fd Sofia Papagiannaki
            try:
57 8e45d6fd Sofia Papagiannaki
                resource = Resource(name=resource_name, service=service)
58 8e45d6fd Sofia Papagiannaki
                resource.save()
59 8e45d6fd Sofia Papagiannaki
            except IntegrityError, e:
60 8e45d6fd Sofia Papagiannaki
                raise CommandError(e)
61 8e45d6fd Sofia Papagiannaki
            # else:
62 5ce3ce4f Sofia Papagiannaki
#                 resource.meta.add(args[2:])