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