2013-02-20 4 views
0
from jira.client import JIRA 
import requests 
import jira.exceptions 
import json 
import re 

class MyJira(JIRA): 

    def _create_http_basic_session(self, username, password): 
     url = self._options['server'] + '/rest/auth/1/session' 
     payload = { 
      'username': username, 
      'password': password 
     } 
     verify = False 
     self._session = requests.session(verify=verify, 
      hooks={'args': self._add_content_type}) 
     r = self._session.post(url, data=json.dumps(payload)) 
     jira.exceptions.raise_on_error(r) 

options = {'server':'http://localhost:8080', 
      'verify': False} 
username = 'usrName' 
password = 'passWord' 

basic_auth =(username,password) 
jira = MyJira(options, basic_auth) 

issue_dict = { 
    'project':{'key':'PROJKEY'}, 
    'summary': 'New Issue from jira-python', 
    'description': 'Test Description for new issue created from jira-python', 
    'issueType': {'name': 'Bug'}} 

new_issue = jira.create_issue(fields=issue_dict,preftech=True) 
print new_issue.id 

이 나에게이 오류 스택 트레이스를 생산/내가 잘못 뭐하는 거지왜 JIRA 문제가 발생하지 않습니까?

/home/ve/bin/python/home/PycharmProjects/RestJira/restjira.py 
Traceback (most recent call last): 
    File "/home/PycharmProjects/RestJira/myrestjira.py", line 81, in <module> 
    new_issue = jira.create_issue(fields=issue_dict,preftech=True) 
    File "/home/ve/lib/python2.6/site-packages/jira/client.py", line 369, in create_issue 
    raise_on_error(r) 
    File "/home/ve/lib/python2.6/site-packages/jira/exceptions.py", line 29, in raise_on_error 
    error = errorMessages[0] 

IndexError: list index out of range 

를 기록? 내가 왜 다른 파일 (restjira.py)에 대한 참조가 현재 (myrestjira.py) 에서 파이썬 2.7, jira - python 라이브러리, 요청 0.14.1, 지라를 사용하고 이외의 이해가 안 돼요 -python 0.12 및 pycharm을 IDE로 사용 누구?

r = self._session.post(url, data=json.dumps(payload)) 
jira.exceptions.raise_on_error(r) 

self._session.post에 대한 귀하의 응답이 오류이지만,받은 오류에 문제가있다 :

+0

당신은 당신의 들여 쓰기를 해결할 수 있을까요? 'MyJira' 클래스의 모든 것은 들여 쓰기가되어야하지만, 나는 당신이 클래스에 있어야했던 것을 100 %가 아닙니다. –

+0

그가 수업을 어떻게 사용하는지에 따라, 'MyJira'의 유일한 것은'_create_http_basic_session'의 정의입니다. – cwallenpoole

+0

@cwallenpoole 좋습니다. 한 가지 방법 만 들여 썼습니다. 그것에 대한 사과는 –

답변

1

귀하의 문제는이 두 라인이다. 이것은 몇 가지 질문으로 이어집니다.

  • Jira 서버가 가동 중이며 localhost:8080에 있는지 확인할 수 있습니까?
  • pprint(r) 일 경우 어떻게됩니까?
  • 사용자 이름과 비밀번호가 맞습니까?
  • self._session.verifyFalse으로 설정되어 있습니까?

restjira.py이 호출 된 이유는 무엇보다이 모듈을로드 한 모듈 일 가능성이 높습니다.


몇 가지 다른 생각 : 당신의 이름을 안

  • 당신의 변수 jira 당신은 import jira.exceptions as jiraexceptions 같은 것으로 import jira.exceptions을 변경하지 않는 한. 코드를 읽기 쉽게 만듭니다.
  • verify = False... verify=verify은 다소 외부입니다. 그냥 False을 kwargs에 두는 것이 어떻습니까?
3

이 시도 ... 작동 ...

from jira.client import JIRA 

jira_options={'server': 'http://abc.xyz.org/jira/'} 

    jira=JIRA(options=jira_options,basic_auth=('user','password')) 

    #Creating an issue: 

new_issue = jira.create_issue(project={'key': 'key'}, summary='New issue from jira- python', description='Look into this one', issuetype={'name': 'Bug'}) 

또는 DICT를 사용하여 문제를 만들기 :

issue_dict = { 
     'project': {'key': 'PROJ'}, 
      'summary': 'New issue from jira-python', 
      'description': 'Look into this one', 
      'issuetype': {'name': 'Bug'}, 
      } 
     new_issue = jira.create_issue(fields=issue_dict) 
+0

이것은 나를 위해 잘 작동합니다. 감사 – Gourneau

관련 문제