Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / management / commands / service-update.py @ cb14cc6c

History | View | Annotate | Download (3.6 kB)

1 e72aa2da Kostas Papadimitriou
# Copyright 2012 GRNET S.A. All rights reserved.
2 e72aa2da Kostas Papadimitriou
#
3 e72aa2da Kostas Papadimitriou
# Redistribution and use in source and binary forms, with or
4 e72aa2da Kostas Papadimitriou
# without modification, are permitted provided that the following
5 e72aa2da Kostas Papadimitriou
# conditions are met:
6 e72aa2da Kostas Papadimitriou
#
7 e72aa2da Kostas Papadimitriou
#   1. Redistributions of source code must retain the above
8 e72aa2da Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
9 e72aa2da Kostas Papadimitriou
#      disclaimer.
10 e72aa2da Kostas Papadimitriou
#
11 e72aa2da Kostas Papadimitriou
#   2. Redistributions in binary form must reproduce the above
12 e72aa2da Kostas Papadimitriou
#      copyright notice, this list of conditions and the following
13 e72aa2da Kostas Papadimitriou
#      disclaimer in the documentation and/or other materials
14 e72aa2da Kostas Papadimitriou
#      provided with the distribution.
15 e72aa2da Kostas Papadimitriou
#
16 e72aa2da Kostas Papadimitriou
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 e72aa2da Kostas Papadimitriou
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 e72aa2da Kostas Papadimitriou
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 e72aa2da Kostas Papadimitriou
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 e72aa2da Kostas Papadimitriou
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 e72aa2da Kostas Papadimitriou
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 e72aa2da Kostas Papadimitriou
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 e72aa2da Kostas Papadimitriou
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 e72aa2da Kostas Papadimitriou
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 e72aa2da Kostas Papadimitriou
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 e72aa2da Kostas Papadimitriou
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 e72aa2da Kostas Papadimitriou
# POSSIBILITY OF SUCH DAMAGE.
28 e72aa2da Kostas Papadimitriou
#
29 e72aa2da Kostas Papadimitriou
# The views and conclusions contained in the software and
30 e72aa2da Kostas Papadimitriou
# documentation are those of the authors and should not be
31 e72aa2da Kostas Papadimitriou
# interpreted as representing official policies, either expressed
32 e72aa2da Kostas Papadimitriou
# or implied, of GRNET S.A.
33 e72aa2da Kostas Papadimitriou
34 e72aa2da Kostas Papadimitriou
from optparse import make_option
35 e72aa2da Kostas Papadimitriou
from datetime import datetime
36 e72aa2da Kostas Papadimitriou
37 e72aa2da Kostas Papadimitriou
from django.core.management.base import BaseCommand, CommandError
38 e72aa2da Kostas Papadimitriou
from django.core.exceptions import ValidationError
39 e72aa2da Kostas Papadimitriou
40 e72aa2da Kostas Papadimitriou
from astakos.im.models import Service
41 e72aa2da Kostas Papadimitriou
from ._common import remove_user_permission, add_user_permission
42 e72aa2da Kostas Papadimitriou
43 e72aa2da Kostas Papadimitriou
44 e72aa2da Kostas Papadimitriou
class Command(BaseCommand):
45 e72aa2da Kostas Papadimitriou
    args = "<service ID>"
46 e72aa2da Kostas Papadimitriou
    help = "Modify service attributes"
47 e72aa2da Kostas Papadimitriou
48 e72aa2da Kostas Papadimitriou
    option_list = BaseCommand.option_list + (
49 e72aa2da Kostas Papadimitriou
        make_option('--name',
50 e72aa2da Kostas Papadimitriou
                    dest='name',
51 e72aa2da Kostas Papadimitriou
                    default=None,
52 e72aa2da Kostas Papadimitriou
                    help="Set service name"),
53 362ff471 Kostas Papadimitriou
        make_option('--url',
54 362ff471 Kostas Papadimitriou
                    dest='url',
55 362ff471 Kostas Papadimitriou
                    default=None,
56 362ff471 Kostas Papadimitriou
                    help="Set service url"),
57 0156e40c Kostas Papadimitriou
        make_option('--api-url',
58 0156e40c Kostas Papadimitriou
                    dest='api_url',
59 e72aa2da Kostas Papadimitriou
                    default=None,
60 0156e40c Kostas Papadimitriou
                    help="Set service API url"),
61 e72aa2da Kostas Papadimitriou
        make_option('--auth-token',
62 e72aa2da Kostas Papadimitriou
                    dest='auth_token',
63 e72aa2da Kostas Papadimitriou
                    default=None,
64 e72aa2da Kostas Papadimitriou
                    help="Set a custom service auth token"),
65 e72aa2da Kostas Papadimitriou
        make_option('--renew-auth-token',
66 e72aa2da Kostas Papadimitriou
                    action='store_true',
67 e72aa2da Kostas Papadimitriou
                    dest='renew_token',
68 e72aa2da Kostas Papadimitriou
                    default=False,
69 e72aa2da Kostas Papadimitriou
                    help="Renew service auth token"),
70 e72aa2da Kostas Papadimitriou
    )
71 e72aa2da Kostas Papadimitriou
72 e72aa2da Kostas Papadimitriou
    def handle(self, *args, **options):
73 e72aa2da Kostas Papadimitriou
        if len(args) != 1:
74 e72aa2da Kostas Papadimitriou
            raise CommandError("Please provide a service ID")
75 e72aa2da Kostas Papadimitriou
76 e72aa2da Kostas Papadimitriou
        try:
77 e72aa2da Kostas Papadimitriou
            service = Service.objects.get(id=int(args[0]))
78 e72aa2da Kostas Papadimitriou
        except Service.DoesNotExist:
79 e72aa2da Kostas Papadimitriou
            raise CommandError("Service does not exist. You may run snf-mange "
80 e72aa2da Kostas Papadimitriou
                               "service-list for available service IDs.")
81 e72aa2da Kostas Papadimitriou
82 e72aa2da Kostas Papadimitriou
        name = options.get('name')
83 0156e40c Kostas Papadimitriou
        api_url = options.get('api_url')
84 362ff471 Kostas Papadimitriou
        url = options.get('url')
85 e72aa2da Kostas Papadimitriou
        auth_token = options.get('auth_token')
86 e72aa2da Kostas Papadimitriou
        renew_token = options.get('renew_token')
87 e72aa2da Kostas Papadimitriou
88 e72aa2da Kostas Papadimitriou
        if name:
89 e72aa2da Kostas Papadimitriou
            service.name = name
90 e72aa2da Kostas Papadimitriou
91 0156e40c Kostas Papadimitriou
        if api_url:
92 0156e40c Kostas Papadimitriou
            service.api_url = api_url
93 e72aa2da Kostas Papadimitriou
94 362ff471 Kostas Papadimitriou
        if url:
95 362ff471 Kostas Papadimitriou
            service.url = url
96 362ff471 Kostas Papadimitriou
97 e72aa2da Kostas Papadimitriou
        if auth_token:
98 e72aa2da Kostas Papadimitriou
            service.auth_token = auth_token
99 e72aa2da Kostas Papadimitriou
100 e72aa2da Kostas Papadimitriou
        if renew_token and not auth_token:
101 e72aa2da Kostas Papadimitriou
            service.renew_token()
102 e72aa2da Kostas Papadimitriou
103 e72aa2da Kostas Papadimitriou
        service.save()