cc1  v2.1
CC1 source code docs
All Classes Namespaces Files Functions Variables Pages
system_image.py
Go to the documentation of this file.
1 # -*- coding: utf-8 -*-
2 # @COPYRIGHT_begin
3 #
4 # Copyright [2010-2014] Institute of Nuclear Physics PAN, Krakow, Poland
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 # http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 # @COPYRIGHT_end
19 
20 ##
21 # @package src.clm.views.user.system_image
22 # @alldecoratedby{src.clm.utils.decorators.user_log}
23 #
24 
25 from clm.models.user import User
26 from common.states import image_access, group_states
27 from clm.utils.decorators import user_log, cm_request
28 from clm.utils.cm import CM
29 from clm.utils.exception import CLMException
30 
31 
32 @user_log(log=False) # XXX
33 ##
34 #
35 # Method returns list of images.
36 #
37 # @param_post{data,dict}
38 #
39 # @returns{list(dict)} images: <code>{gid, name, [images]}</code>
40 #
41 def get_list(cm_id, caller_id, **data):
42  group_dict = {}
43 
44  # creation of information in data['gid']: group ids the caller belongs to
45  if data['access'] == image_access['group']:
46  groups = User.get(caller_id).group_set.filter(usergroup__status__exact=group_states['ok'])
47  data['group_id'] = []
48  for g in groups:
49  # append info in data['gid'] to send with the request to CM
50  data['group_id'].append(int(g.id))
51  group_dict[g.id] = {'name': g.name, 'images': []}
52 
53  resp = CM(cm_id).send_request("user/system_image/get_list/", caller_id=caller_id, **data)
54  if resp['status'] != 'ok':
55  return resp
56 
57  images = resp['data']
58  # uzupełnianie zapytania o ownera i grupowanie w słownik {gid, name, [images]}
59  # adds information on the owner of the images with group access {gid, name, [images]}
60  if data['access'] == image_access['group']:
61  d = {}
62  for img in images:
63  group_dict[img['group_id']]['images'].append(img)
64 
65  if img['user_id'] not in d:
66  try:
67  u = User.objects.get(pk=img['user_id'])
68  d[img['user_id']] = u.first + " " + u.last
69  except:
70  raise CLMException('user_get')
71  img['owner'] = d[img['user_id']]
72  resp = [{'group_id': k, 'name': v['name'], 'images': v['images']} for k, v in group_dict.iteritems()]
73 
74  return resp
75 
76  return images
77 
78 
79 @user_log(log=False, pack=False)
80 ##
81 #
82 # @clmview_user
83 # Fun takes the same parameters as cm.user.system_image.get_by_id(), except for @prm{groups}
84 #
85 def get_by_id(cm_id, caller_id, **data): # @todo rename for fun name consistency
86  user = User.get(caller_id)
87  groups = list(user.group_set.filter(usergroup__status__exact=group_states['ok']).values_list('id', flat=True))
88  return CM(cm_id).send_request("user/system_image/get_by_id/", caller_id=caller_id, groups=groups, **data)
89 
90 
91 @user_log(log=True, pack=False)
92 @cm_request
93 ##
94 #
95 # @clmview_user
96 # @cm_request_transparent{user.system_image.delete()}
97 #
98 def delete(cm_response, **data):
99  return cm_response
100 
101 
102 @user_log(log=True, pack=False)
103 @cm_request
104 ##
105 #
106 # @clmview_user
107 # @cm_request_transparent{user.system_image.edit()}
108 #
109 def edit(cm_response, **data):
110  return cm_response
111 
112 
113 @user_log(log=True, pack=False)
114 ##
115 #
116 # @param_post{system_image_id,int} managed image's id
117 #
118 def set_private(cm_id, caller_id, system_image_id):
119  user = User.get(caller_id)
120  return CM(cm_id).send_request("user/system_image/set_private/", caller_id=caller_id, system_image_id=system_image_id,
121  leader_groups=[g.id for g in user.own_groups])
122 
123 
124 @user_log(log=True, pack=False)
125 @cm_request
126 ##
127 #
128 # @clmview_user
129 # @cm_request_transparent{user.system_image.set_group()}
130 #
131 def set_group(cm_response, **data):
132  return cm_response
133 
134 
135 @user_log(log=True, pack=False)
136 @cm_request
137 ##
138 #
139 # @clmview_user
140 # @cm_request_transparent{user.system_image.create()}
141 #
142 def create(cm_response, **data):
143  return cm_response
144 
145 
146 @user_log(log=True, pack=False)
147 @cm_request
148 ##
149 #
150 # @clmview_user
151 # @cm_request_transparent{user.system_image.download()}
152 #
153 def download(cm_response, **data):
154  return cm_response
155 
156 
157 @user_log(log=True, pack=False)
158 @cm_request
159 ##
160 #
161 # @clmview_user
162 # @cm_request_transparent{user.system_image.download_ec2()}
163 #
164 def download_ec2(cm_response, **data):
165  return cm_response
166 
167 
168 @user_log(log=False, pack=False)
169 @cm_request
170 ##
171 #
172 # @clmview_user
173 # @cm_request_transparent{user.system_image.get_filesystems()}
174 #
175 def get_filesystems(cm_response, **data):
176  return cm_response
177 
178 
179 @user_log(log=False, pack=False)
180 @cm_request
181 ##
182 #
183 # @clmview_user
184 # @cm_request_transparent{user.system_image.get_video_devices()}
185 #
186 def get_video_devices(cm_response, **data):
187  return cm_response
188 
189 
190 @user_log(log=False, pack=False)
191 @cm_request
192 ##
193 #
194 # @clmview_user
195 # @cm_request_transparent{user.system_image.get_network_devices()}
196 #
197 def get_network_devices(cm_response, **data):
198  return cm_response
199 
200 
201 @user_log(log=False, pack=False)
202 @cm_request
203 ##
204 #
205 # @clmview_user
206 # @cm_request_transparent{user.system_image.get_disk_controllers()}
207 #
208 def get_disk_controllers(cm_response, **data):
209  return cm_response
210 
211 
212 @user_log(log=False, pack=False)
213 @cm_request
214 ##
215 #
216 # @clmview_user
217 # @cm_request_transparent{user.system_image.convert_to_storage_image()}
218 #
219 def convert_to_storage_image(cm_response, **data):
220  return cm_response
221