1 # Copyright 2011-2012 GRNET S.A. All rights reserved.
3 # Redistribution and use in source and binary forms, with or
4 # without modification, are permitted provided that the following
7 # 1. Redistributions of source code must retain the above
8 # copyright notice, this list of conditions and the following
11 # 2. Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following
13 # disclaimer in the documentation and/or other materials
14 # provided with the distribution.
16 # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 # POSSIBILITY OF SUCH DAMAGE.
29 # The views and conclusions contained in the software and
30 # documentation are those of the authors and should not be
31 # interpreted as representing official policies, either expressed
32 # or implied, of GRNET S.A.
37 from django.utils.translation import ugettext as _
39 from commissioning.clients.quotaholder import QuotaholderHTTP
41 from astakos.im.settings import QUOTA_HOLDER_URL, LOGGING_LEVEL
45 logger = logging.getLogger(__name__)
47 def register_users(users, client=None):
51 if not QUOTA_HOLDER_URL:
54 c = client or QuotaholderHTTP(QUOTA_HOLDER_URL)
60 except AttributeError:
63 args = entity, owner, key, ownerkey = (
64 entity, 'system', ENTITY_KEY, ''
71 rejected = c.create_entity(
75 msg = _('Create entities: %s - Rejected: %s' % (data, rejected,))
76 logger.log(LOGGING_LEVEL, msg)
78 created = filter(lambda u: unicode(u.email) not in rejected, users)
79 send_quota(created, c)
82 def send_quota(users, client=None):
86 if not QUOTA_HOLDER_URL:
89 c = client or QuotaholderHTTP(QUOTA_HOLDER_URL)
95 except AttributeError:
98 for resource, limit in user.quota.iteritems():
99 args = entity, resource, key, quantity, capacity, import_limit , \
100 export_limit, flags =(
101 entity, resource, ENTITY_KEY, '0', str(limit), 0, 0, 0
108 rejected = c.set_quota(context={}, set_quota=data)
109 msg = _('Set quota: %s - Rejected: %s' % (data, rejected,))
110 logger.log(LOGGING_LEVEL, msg)
113 def get_quota(users, client=None):
117 if not QUOTA_HOLDER_URL:
120 c = client or QuotaholderHTTP(QUOTA_HOLDER_URL)
126 except AttributeError:
129 for r in user.quota.keys():
130 args = entity, resource, key = entity, r, ENTITY_KEY
136 r = c.get_quota(context={}, get_quota=data)
137 msg = _('Get quota: %s' % data)
138 logger.log(LOGGING_LEVEL, msg)