2017-05-16 75 views
1

我想使用Luigi來管理Openstack中的工作流程。我是路易吉的新手。對於初學者,我只想向Openstack驗證自己,然後使用Luigi獲取圖像列表,風味列表等。任何幫助將是可觀的。如何利用luigi進行OpenStack任務

我不太擅長python,但我嘗試了下面的代碼。我也無法列出圖像。錯誤:glanceclient.exc.HTTPNotFound:無法找到資源。 (HTTP 404)

import luigi 
import os_client_config 
import glanceclient.v2.client as glclient 
from luigi.mock import MockFile 
import sys 
import os 

def get_credentials(): 
    d = {} 
    d['username'] = 'X' 
    d['password'] = 'X' 
    d['auth_url'] = 'X' 
    d['tenant_name'] = 'X' 
    d['endpoint'] = 'X' 
    return d 

class LookupOpenstack(luigi.Task): 
    d =[] 

    def requires(self): 
     pass 
    def output(self): 
     gc = glclient.Client(**get_credentials()) 
     images = gc.images.list() 
     print("images", images) 
     for i in images: 
      print(i) 

     return MockFile("images", mirror_on_stderr=True) 

    def run(self): 
     pass 

if __name__ == '__main__': 
    luigi.run(["--local-scheduler"], LookupOpenstack()) 

回答

0

一般的方法是使用OpenStack API編寫python代碼來執行您想要的任務。 https://docs.openstack.org/user-guide/sdk.html它看起來像你得到的錯誤是在OpenStack網站上解決。 https://ask.openstack.org/en/question/90071/glanceclientexchttpnotfound-the-resource-could-not-be-found-http-404/

你會然後只是包裝在路易吉Tasks這個代碼適當而有什麼特別之處這個OpenStack的做的,除了你必須確定你的路易吉的任務與輸出指示任務相匹配的output()完成。 現在看起來工作是在output()方法中完成的,它應該在run()方法中,輸出方法應該是尋找什麼來指示run()方法是完整的,所以它如果已經完成,則在另一個任務需要時不運行()。

如果不理解工作流程的更多細節,就真的不可能說更多。

+0

我試過了代碼(添加到編輯中)。我也不擅長python,但任何提示即興編碼的建議都會有所幫助。 –