Source code for api4jenkins.input
# encoding: utf-8
import json
from .item import Item
from .mix import RawJsonMixIn
[docs]
class PendingInputAction(RawJsonMixIn, Item):
''' this class implement functionality to process
`input step <https://www.jenkins.io/doc/pipeline/steps/pipeline-input-step/>`_
'''
def __init__(self, jenkins, raw):
super().__init__(
jenkins, f"{jenkins.url}{raw['abortUrl'].rstrip('abort')}")
self.raw = raw
self.raw['_class'] = 'PendingInputAction'
[docs]
def abort(self):
'''submit `input step <https://www.jenkins.io/doc/pipeline/steps/pipeline-input-step/>`_'''
return self.handle_req('POST', 'abort')
[docs]
def submit(self, **params):
'''submit `input step <https://www.jenkins.io/doc/pipeline/steps/pipeline-input-step/>`_
- for input requires parametes:
- if submit without parameters, it will use default value of parameters
- if submit with wrong parameters, exception raised
- for input does not requires parameters, but submit with paramters, exception raised
'''
if params:
args = [a['name'] for a in self.raw['inputs']]
params_keys = list(params.keys())
if not args:
raise TypeError(
f'input takes 0 argument, but got {params_keys}')
if not all(k in args for k in params_keys):
raise TypeError(
f'input takes arguments: {args}, but got {params_keys}')
params = [{'name': k, 'value': v} for k, v in params.items()]
data = {'proceed': self.raw['proceedText'],
'json': json.dumps({'parameter': params})}
return self.handle_req('POST', 'submit', data=data)
return self.handle_req('POST', 'proceedEmpty')