Skip to content

Commit 47b4d84

Browse files
committed
rename pan.xapi log() sleep argument to interval and rework query
interval processing slightly. add --timeout and --interval options for use with --log to panxapi.
1 parent 965fe01 commit 47b4d84

File tree

3 files changed

+33
-23
lines changed

3 files changed

+33
-23
lines changed

bin/panxapi.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ def main():
157157
nlogs=options['nlogs'],
158158
skip=options['skip'],
159159
filter=options['filter'],
160-
# sleep=None,
161-
timeout=None)
160+
interval=options['interval'],
161+
timeout=options['job_timeout'])
162162
print_status(xapi, action)
163163
print_response(xapi, options)
164164

@@ -260,6 +260,8 @@ def parse_opts():
260260
'nlogs': None,
261261
'skip': None,
262262
'filter': None,
263+
'interval': None,
264+
'job_timeout': None,
263265
'api_key': None,
264266
'cafile': None,
265267
'capath': None,
@@ -289,6 +291,7 @@ def parse_opts():
289291
'clone', 'export=', 'log=', 'recursive',
290292
'cafile=', 'capath=', 'ls', 'serial=',
291293
'group=', 'merge', 'nlogs=', 'skip=', 'filter=',
294+
'interval=', 'timeout=',
292295
]
293296

294297
try:
@@ -378,6 +381,10 @@ def parse_opts():
378381
options['skip'] = arg
379382
elif opt == '--filter':
380383
options['filter'] = arg
384+
elif opt == '--interval':
385+
options['interval'] = arg
386+
elif opt == '--timeout':
387+
options['job_timeout'] = arg
381388
elif opt == '-h':
382389
options['hostname'] = arg
383390
elif opt == '-K':
@@ -656,6 +663,8 @@ def usage():
656663
--nlogs num retrieve num logs
657664
--skip num skip num logs
658665
--filter filter log selection filter
666+
--interval log job query interval
667+
--timeout log job query timeout
659668
-K api_key
660669
-x print XML response to stdout
661670
-p print XML response in Python to stdout

doc/pan.xapi.rst

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ export(category=None, from_name=None)
329329
**from_name** argument is used to specify the source for a file list
330330
or file export.
331331

332-
log(self, log_type=None, nlogs=None, skip=None, filter=None, sleep=_job_sleep, timeout=None)
332+
log(self, log_type=None, nlogs=None, skip=None, filter=None, interval=None, timeout=None)
333333
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
334334

335335
The log() method performs the ``type=log`` retrieve log API request
@@ -360,7 +360,7 @@ log(self, log_type=None, nlogs=None, skip=None, filter=None, sleep=_job_sleep, t
360360

361361
- **skip**
362362

363-
Specify the number of logs to skip. This can be used to retieve log
363+
Specify the number of logs to skip. This can be used to retrieve log
364364
entries in batches by skipping previously retrieved logs.
365365

366366
The default is 0.
@@ -378,12 +378,12 @@ log(self, log_type=None, nlogs=None, skip=None, filter=None, sleep=_job_sleep, t
378378
job ID returned in the initial request is complete and receive the log
379379
data. Additional arguments to control the polling include:
380380

381-
- **sleep**
381+
- **interval**
382382

383-
A floating point number specifying the number of seconds to sleep
384-
between each non-finished job status request.
383+
A floating point number specifying the query interval in seconds
384+
between each non-finished job status response.
385385

386-
The default is 0.5.
386+
The default is 0.5 seconds.
387387

388388
- **timeout**
389389

lib/pan/xapi.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import pan.rc
4545

4646
_encoding = 'utf-8'
47-
_job_sleep = 0.5
47+
_job_query_interval = 0.5
4848

4949

5050
class PanXapiError(Exception):
@@ -770,17 +770,19 @@ def export(self, category=None, from_name=None, to_name=None):
770770
self.export_result['category'] = category
771771

772772
def log(self, log_type=None, nlogs=None, skip=None, filter=None,
773-
sleep=_job_sleep, timeout=None):
773+
interval=None, timeout=None):
774774
self.__set_api_key()
775775
self.__clear_response()
776776

777-
if sleep is not None:
778-
try:
779-
sleep = float(sleep)
780-
if sleep < 0:
781-
raise ValueError
782-
except ValueError:
783-
raise PanXapiError('Invalid sleep: %s' % sleep)
777+
if interval is None:
778+
interval = _job_query_interval
779+
780+
try:
781+
interval = float(interval)
782+
if interval < 0:
783+
raise ValueError
784+
except ValueError:
785+
raise PanXapiError('Invalid interval: %s' % interval)
784786

785787
if timeout is not None:
786788
try:
@@ -811,7 +813,7 @@ def log(self, log_type=None, nlogs=None, skip=None, filter=None,
811813

812814
job = self.element_root.find('./result/job')
813815
if job is None:
814-
raise PanXapiError('no job element in type=log request')
816+
raise PanXapiError('no job element in type=log response')
815817

816818
query = {}
817819
query['type'] = 'log'
@@ -834,7 +836,7 @@ def log(self, log_type=None, nlogs=None, skip=None, filter=None,
834836
status = self.element_root.find('./result/job/status')
835837
if status is None:
836838
raise PanXapiError('no status element in ' +
837-
'type=log&action=get request')
839+
'type=log&action=get response')
838840
if status.text == 'FIN':
839841
return
840842

@@ -847,10 +849,9 @@ def log(self, log_type=None, nlogs=None, skip=None, filter=None,
847849
raise PanXapiError('timeout waiting for ' +
848850
'job %s completion' % job.text)
849851

850-
if sleep is not None:
851-
if self.debug2:
852-
print('sleep %.2f seconds' % sleep, file=sys.stderr)
853-
time.sleep(sleep)
852+
if self.debug2:
853+
print('sleep %.2f seconds' % interval, file=sys.stderr)
854+
time.sleep(interval)
854855

855856
if __name__ == '__main__':
856857
# python -m pan.xapi [tag] [xpath] [0-3]

0 commit comments

Comments
 (0)