2017-04-07 51 views
1

我在探索rundeck api以返回作業列表。我通過UI手動創建了兩個作業。但是,我通過該API獲得了0個職位。我很難弄清楚在這個過程中發生了什麼。無法通過使用Python的Rundeck API檢索作業

下面是我的代碼示例:

import urllib2 
import logging 
import ssl 
RUNDECK_TOKEN = 'My_API_Token' 

class Rundeck(): 
    def get_full_url(self): 
     return 'https://rdurl:8443/rundeckpro/api/14/project/Sandbox/jobs?authtoken=' + RUNDECK_TOKEN 


    def make_api_call(self): 
     context = ssl._create_unverified_context() 
     opener = urllib2.build_opener(urllib2.HTTPSHandler(context=context)) 
     request = urllib2.Request(self.get_full_url()) 
     try: 
      return opener.open(request, timeout=30) 
     except urllib2.HTTPError as err: 
      if err.code == 409: 
       return 'Running' 
     except Exception as e: 
      logging.error('Exception : %s', e) 
      return False 


if __name__ == '__main__': 
    jobs = Rundeck() 
    print jobs.get_full_url() 
    print jobs.make_api_call().read() 

輸出是:

<jobs count='0' /> 

感謝您的幫助。

回答

0

你的腳本對我來說工作得很好。

請檢查您的Rundeck ACL,您的api密鑰所有者可能沒有讀取您創建的作業的權限。

測試輸出:

tmp $ python test.py 
http://localhost:4440/api/14/project/TestProject/jobs?authtoken=OyFXX1q4UzhTUe7deOUIPJKkrUnEwZlo 
<jobs count='3'> 
    <job id='63385df9-8898-48e9-ae8a-047b548915cd' href='http://localhost:4440/api/18/job/63385df9-8898-48e9-ae8a-047b548915cd' permalink='http://localhost:4440/project/TestProject/job/show/63385df9-8898-48e9-ae8a-047b548915cd'> 
    <name>TEST</name> 
    <group /> 
    <project>TestProject</project> 
    <description></description> 
    </job> 
    <job id='02a41aaa-eb50-4831-8762-80b798468cbe' href='http://localhost:4440/api/18/job/02a41aaa-eb50-4831-8762-80b798468cbe' permalink='http://localhost:4440/project/TestProject/job/show/02a41aaa-eb50-4831-8762-80b798468cbe'> 
    <name>TestJob</name> 
    <group /> 
    <project>TestProject</project> 
    <description>TestJob Description</description> 
    </job> 
    <job id='9b2ac9e9-0350-4494-a463-b43ba1e458ab' href='http://localhost:4440/api/18/job/9b2ac9e9-0350-4494-a463-b43ba1e458ab' permalink='http://localhost:4440/project/TestProject/job/show/9b2ac9e9-0350-4494-a463-b43ba1e458ab'> 
    <name>TestJob2</name> 
    <group /> 
    <project>TestProject</project> 
    <description></description> 
    </job> 
</jobs> 
+0

用戶在ACL中的所有訪問。我還發現一個問題,我可以在瀏覽器中使用https:// rdurl:8443/rundeckpro/api/14/project/Sandbox/jobs?authtoken = My_TOKEN,並在登錄後查看所有作業。 –