2017-05-16 41 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,但任何提示即兴编码的建议都会有所帮助。 –