Revision 3d103742
b/lib/rapi/baserlib.py | ||
---|---|---|
28 | 28 |
|
29 | 29 |
from ganeti import luxi |
30 | 30 |
from ganeti import rapi |
31 |
from ganeti import http |
|
31 | 32 |
|
32 | 33 |
|
33 | 34 |
def BuildUriList(ids, uri_format, uri_fields=("name", "uri")): |
... | ... | |
173 | 174 |
|
174 | 175 |
""" |
175 | 176 |
return self.sn |
177 |
|
|
178 |
def _checkIntVariable(self, name): |
|
179 |
"""Return the parsed value of an int argument. |
|
180 |
|
|
181 |
""" |
|
182 |
val = self.queryargs.get(name, 0) |
|
183 |
if isinstance(val, list): |
|
184 |
if val: |
|
185 |
val = val[0] |
|
186 |
else: |
|
187 |
val = 0 |
|
188 |
try: |
|
189 |
val = int(val) |
|
190 |
except (ValueError, TypeError), err: |
|
191 |
raise http.HttpBadRequest(message="Invalid value for the" |
|
192 |
" '%s' parameter" % (name,)) |
|
193 |
return val |
|
194 |
|
|
195 |
def useLocking(self): |
|
196 |
"""Check if the request specifies locking. |
|
197 |
|
|
198 |
""" |
|
199 |
return self._checkIntVariable('lock') |
|
200 |
|
|
201 |
def useBulk(self): |
|
202 |
"""Check if the request specifies bulk querying. |
|
203 |
|
|
204 |
""" |
|
205 |
return self._checkIntVariable('bulk') |
b/lib/rapi/rlib2.py | ||
---|---|---|
217 | 217 |
""" |
218 | 218 |
client = luxi.Client() |
219 | 219 |
|
220 |
if 'bulk' in self.queryargs:
|
|
220 |
if self.useBulk():
|
|
221 | 221 |
bulkdata = client.QueryNodes([], N_FIELDS, False) |
222 | 222 |
return baserlib.MapBulkFields(bulkdata, N_FIELDS) |
223 | 223 |
else: |
... | ... | |
240 | 240 |
node_name = self.items[0] |
241 | 241 |
client = luxi.Client() |
242 | 242 |
result = client.QueryNodes(names=[node_name], fields=N_FIELDS, |
243 |
use_locking=False)
|
|
243 |
use_locking=self.useLocking())
|
|
244 | 244 |
|
245 | 245 |
return baserlib.MapFields(N_FIELDS, result[0]) |
246 | 246 |
|
... | ... | |
301 | 301 |
""" |
302 | 302 |
client = luxi.Client() |
303 | 303 |
|
304 |
|
|
305 |
if 'bulk' in self.queryargs:
|
|
306 |
bulkdata = client.QueryInstances([], I_FIELDS, False)
|
|
304 |
use_locking = self.useLocking() |
|
305 |
if self.useBulk():
|
|
306 |
bulkdata = client.QueryInstances([], I_FIELDS, use_locking)
|
|
307 | 307 |
return baserlib.MapBulkFields(bulkdata, I_FIELDS) |
308 | 308 |
else: |
309 |
instancesdata = client.QueryInstances([], ["name"], False)
|
|
309 |
instancesdata = client.QueryInstances([], ["name"], use_locking)
|
|
310 | 310 |
instanceslist = [row[0] for row in instancesdata] |
311 | 311 |
return baserlib.BuildUriList(instanceslist, "/2/instances/%s", |
312 | 312 |
uri_fields=("id", "uri")) |
... | ... | |
362 | 362 |
client = luxi.Client() |
363 | 363 |
instance_name = self.items[0] |
364 | 364 |
result = client.QueryInstances(names=[instance_name], fields=I_FIELDS, |
365 |
use_locking=False)
|
|
365 |
use_locking=self.useLocking())
|
|
366 | 366 |
|
367 | 367 |
return baserlib.MapFields(I_FIELDS, result[0]) |
368 | 368 |
|
Also available in: Unified diff