def get_and_confirm_status(self, url, params=None, headers=None, valid=None): valid = valid or self.VALID_STATUS_CODES response = self.get_url(url, params, headers) if not response.status_code in valid: raise JenkinsAPIException( 'Operation failed. url={0}, headers={1}, status={2}, text={3}'. format(response.url, headers, response.status_code, response.text.encode('UTF-8'))) return response
def create_job(self, jobname, config): """ Create a job :param jobname: name of new job, str :param config: configuration of new job, xml :return: new Job obj """ if self.has_job(jobname): return self[jobname] params = {'name': jobname} if isinstance(config, unicode): config = str(config) self.requester.post_xml_and_confirm_status(self.get_create_url(), data=config, params=params) self.poll() if not self.has_job(jobname): raise JenkinsAPIException('Cannot create job %s' % jobname) return self[jobname]
def post_and_confirm_status(self, url, params=None, data=None, headers=None, valid=None): valid = valid or self.VALID_STATUS_CODES assert isinstance(data, ( str, dict)), \ "Unexpected type of parameter 'data': %s. Expected (str, dict)" % type(data) if not headers: headers = {'Content-Type': 'application/x-www-form-urlencoded'} response = self.post_url(url, params, data, headers) if not response.status_code in valid: raise JenkinsAPIException( 'Operation failed. url={0}, data={1}, headers={2}, status={3}, text={4}' .format(response.url, data, headers, response.status_code, response.text.encode('UTF-8'))) return response