如何利用luigi进行Openstack任务

时间:2017-05-16 05:12:07

标签: python openstack luigi

我想使用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())

1 个答案:

答案 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()方法是完整的因此,如果已经完成另一个任务的需要,它就不会运行()。

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