如何利用 luigi 执行 Openstack 任务

How can I leverage luigi for Openstack tasks

我想使用 Luigi 来管理 Openstack 中的工作流程。我是路易吉的新手。对于初学者,我只想向 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())

一般的方法是编写 python 代码来使用 OpenStack API 执行您想要的任务。 https://docs.openstack.org/user-guide/sdk.html It looks like the error you are getting is addressed on the OpenStack site. https://ask.openstack.org/en/question/90071/glanceclientexchttpnotfound-the-resource-could-not-be-found-http-404/

然后您只需将此代码适当地包装在 luigi Tasks 中 - 使用此 OpenStack 没有什么特别的,除了您必须定义 luigi 任务的 output() 以匹配指示任务已完成的输出。 现在看起来工作是在 output() 方法中完成的,它应该在 运行() 方法中,输出方法应该就是要查找的内容,以表明运行() 方法已完成,因此如果其他任务已经完成,则它不会 运行()。

如果不了解您的工作流程的更多细节,真的不可能多说。