我想使用Luigi来管理Openstack中的工作流程。我是Luigi的新手。对于初学者,我只想对Openstack进行身份验证,然后使用Luigi获取图像列表,风味列表等。任何帮助都会很明显。
我对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 :(得分:0)
这样做的一般方法是编写python代码,以使用OpenStack API执行所需的任务。 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/
然后您可以根据需要将此代码包装在luigi Tasks
中 - 除了必须定义您的luigi任务的output()
之外,这对于使用此OpenStack没有什么特别之处输出表明任务已完成。 现在看起来工作是在output()方法中完成的,它应该在run()方法中,输出方法应该只是寻找指示run()方法是完整的因此,如果已经完成另一个任务的需要,它就不会运行()。
如果不了解工作流程的更多细节,真的不可能多说。