@@ -230,7 +230,8 @@ def update_service(self,
230
230
dependencies = None ,
231
231
teardown = None ,
232
232
setup = None ,
233
- legacy = None ):
233
+ legacy = None ,
234
+ force = None ):
234
235
"""Update (upgrade) a service.
235
236
236
237
:param mount: Service mount path (e.g "/_admin/aardvark").
@@ -247,8 +248,10 @@ def update_service(self,
247
248
:type teardown: bool
248
249
:param setup: Run service setup script.
249
250
:type setup: bool
250
- :param legacy: Install the service in 2.8 legacy compatibility mode.
251
+ :param legacy: Update the service in 2.8 legacy compatibility mode.
251
252
:type legacy: bool
253
+ :param force: Force update if no service is found.
254
+ :type force: bool
252
255
:return: Updated service metadata.
253
256
:rtype: dict
254
257
:raise arango.exceptions.FoxxServiceUpdateError: If update fails.
@@ -260,6 +263,8 @@ def update_service(self,
260
263
params ['setup' ] = setup
261
264
if legacy is not None :
262
265
params ['legacy' ] = legacy
266
+ if force is not None :
267
+ params ['force' ] = force
263
268
264
269
data = {}
265
270
if source is not None :
@@ -283,52 +288,56 @@ def response_handler(resp):
283
288
284
289
return self ._execute (request , response_handler )
285
290
286
- # TODO Remove once method is confirmed to be not supported
287
- # def update_service_by_file(self,
288
- # mount,
289
- # filename=None,
290
- # teardown=None,
291
- # setup=None,
292
- # legacy=None):
293
- # """Update (upgrade) a service using a javascript file or zip bundle.
294
- #
295
- # :param mount: Service mount path (e.g "/_admin/aardvark").
296
- # :type mount: str | unicode
297
- # :param filename: Full path to the javascript file or zip bundle.
298
- # :type filename: str | unicode
299
- # :param teardown: Run service teardown script.
300
- # :type teardown: bool
301
- # :param setup: Run service setup script.
302
- # :type setup: bool
303
- # :param legacy: Install the service in 2.8 legacy compatibility mode.
304
- # :type legacy: bool
305
- # :return: Updated service metadata.
306
- # :rtype: dict
307
- # :raise arango.exceptions.FoxxServiceUpdateError: If update fails.
308
- # """
309
- # params = {'mount': mount}
310
- # if teardown is not None:
311
- # params['teardown'] = teardown
312
- # if setup is not None:
313
- # params['setup'] = setup
314
- # if legacy is not None:
315
- # params['legacy'] = legacy
316
- #
317
- # data = self._encode_file(filename)
318
- # request = Request(
319
- # method='patch',
320
- # endpoint='/_api/foxx',
321
- # params=params,
322
- # data=data,
323
- # headers={'content-type': data.content_type}
324
- # )
325
- #
326
- # def response_handler(resp):
327
- # if not resp.is_success:
328
- # raise FoxxServiceUpdateError(resp, request)
329
- # return resp.body
330
- #
331
- # return self._execute(request, response_handler)
291
+ def update_service_with_file (self ,
292
+ mount ,
293
+ filename = None ,
294
+ teardown = None ,
295
+ setup = None ,
296
+ legacy = None ,
297
+ force = None ):
298
+ """Update (upgrade) a service using a javascript file or zip bundle.
299
+
300
+ :param mount: Service mount path (e.g "/_admin/aardvark").
301
+ :type mount: str | unicode
302
+ :param filename: Full path to the javascript file or zip bundle.
303
+ :type filename: str | unicode
304
+ :param teardown: Run service teardown script.
305
+ :type teardown: bool
306
+ :param setup: Run service setup script.
307
+ :type setup: bool
308
+ :param legacy: Update the service in 2.8 legacy compatibility mode.
309
+ :type legacy: bool
310
+ :param force: Force update if no service is found.
311
+ :type force: bool
312
+ :return: Updated service metadata.
313
+ :rtype: dict
314
+ :raise arango.exceptions.FoxxServiceUpdateError: If update fails.
315
+ """
316
+ params = {'mount' : mount }
317
+ if teardown is not None :
318
+ params ['teardown' ] = teardown
319
+ if setup is not None :
320
+ params ['setup' ] = setup
321
+ if legacy is not None :
322
+ params ['legacy' ] = legacy
323
+ if force is not None :
324
+ params ['force' ] = force
325
+
326
+ data = self ._encode_file (filename )
327
+ request = Request (
328
+ method = 'patch' ,
329
+ endpoint = '/_api/foxx/service' ,
330
+ params = params ,
331
+ data = data ,
332
+ headers = {'content-type' : data .content_type }
333
+ )
334
+
335
+ def response_handler (resp ):
336
+ if not resp .is_success :
337
+ raise FoxxServiceUpdateError (resp , request )
338
+ return resp .body
339
+
340
+ return self ._execute (request , response_handler )
332
341
333
342
def replace_service (self ,
334
343
mount ,
@@ -355,7 +364,7 @@ def replace_service(self,
355
364
:type teardown: bool
356
365
:param setup: Run service setup script.
357
366
:type setup: bool
358
- :param legacy: Install the service in 2.8 legacy compatibility mode.
367
+ :param legacy: Replace the service in 2.8 legacy compatibility mode.
359
368
:type legacy: bool
360
369
:param force: Force install if no service is found.
361
370
:type force: bool
@@ -395,57 +404,56 @@ def response_handler(resp):
395
404
396
405
return self ._execute (request , response_handler )
397
406
398
- # TODO Remove once method is confirmed to be not supported
399
- # def replace_service_by_file(self,
400
- # mount,
401
- # filename=None,
402
- # teardown=None,
403
- # setup=None,
404
- # legacy=None,
405
- # force=None):
406
- # """Replace a service using a javascript file or zip bundle.
407
- #
408
- # :param mount: Service mount path (e.g "/_admin/aardvark").
409
- # :type mount: str | unicode
410
- # :param filename: Full path to the javascript file or zip bundle.
411
- # :type filename: str | unicode
412
- # :param teardown: Run service teardown script.
413
- # :type teardown: bool
414
- # :param setup: Run service setup script.
415
- # :type setup: bool
416
- # :param legacy: Install the service in 2.8 legacy compatibility mode.
417
- # :type legacy: bool
418
- # :param force: Force install if no service is found.
419
- # :type force: bool
420
- # :return: Replaced service metadata.
421
- # :rtype: dict
422
- # :raise arango.exceptions.FoxxServiceReplaceError: If replace fails.
423
- # """
424
- # params = {'mount': mount}
425
- # if teardown is not None:
426
- # params['teardown'] = teardown
427
- # if setup is not None:
428
- # params['setup'] = setup
429
- # if legacy is not None:
430
- # params['legacy'] = legacy
431
- # if force is not None:
432
- # params['force'] = force
433
- #
434
- # data = self._encode_file(filename)
435
- # request = Request(
436
- # method='put',
437
- # endpoint='/_api/foxx',
438
- # params=params,
439
- # data=data,
440
- # headers={'content-type': data.content_type}
441
- # )
442
- #
443
- # def response_handler(resp):
444
- # if not resp.is_success:
445
- # raise FoxxServiceReplaceError(resp, request)
446
- # return resp.body
447
- #
448
- # return self._execute(request, response_handler)
407
+ def replace_service_with_file (self ,
408
+ mount ,
409
+ filename = None ,
410
+ teardown = None ,
411
+ setup = None ,
412
+ legacy = None ,
413
+ force = None ):
414
+ """Replace a service using a javascript file or zip bundle.
415
+
416
+ :param mount: Service mount path (e.g "/_admin/aardvark").
417
+ :type mount: str | unicode
418
+ :param filename: Full path to the javascript file or zip bundle.
419
+ :type filename: str | unicode
420
+ :param teardown: Run service teardown script.
421
+ :type teardown: bool
422
+ :param setup: Run service setup script.
423
+ :type setup: bool
424
+ :param legacy: Replace the service in 2.8 legacy compatibility mode.
425
+ :type legacy: bool
426
+ :param force: Force install if no service is found.
427
+ :type force: bool
428
+ :return: Replaced service metadata.
429
+ :rtype: dict
430
+ :raise arango.exceptions.FoxxServiceReplaceError: If replace fails.
431
+ """
432
+ params = {'mount' : mount }
433
+ if teardown is not None :
434
+ params ['teardown' ] = teardown
435
+ if setup is not None :
436
+ params ['setup' ] = setup
437
+ if legacy is not None :
438
+ params ['legacy' ] = legacy
439
+ if force is not None :
440
+ params ['force' ] = force
441
+
442
+ data = self ._encode_file (filename )
443
+ request = Request (
444
+ method = 'put' ,
445
+ endpoint = '/_api/foxx/service' ,
446
+ params = params ,
447
+ data = data ,
448
+ headers = {'content-type' : data .content_type }
449
+ )
450
+
451
+ def response_handler (resp ):
452
+ if not resp .is_success :
453
+ raise FoxxServiceReplaceError (resp , request )
454
+ return resp .body
455
+
456
+ return self ._execute (request , response_handler )
449
457
450
458
def delete_service (self , mount , teardown = None ):
451
459
"""Uninstall a service.
0 commit comments