0
私はLuigiとOpenstackで作業しようとしています。メインからクラスを呼び出す際に、私は問題があります。私はまだPythonを学んでいますが、実際にはエラーは表示されません。<Class>オブジェクトには属性がありません
ERROR:はAttributeError:「OpenstackHelper」オブジェクトが属性「サーバ
password = sys.argv[1]
auth_url = sys.argv[2]
username = sys.argv[3]
tenant_name = sys.argv[4]
class OpenstackHelper(luigi.Task):
def requires(self):
pass
def run(self):
self.keystone_auth = v2.Password(username=username, password=password, tenant_name=tenant_name,
auth_url=auth_url)
self.keystone_session = session.Session(auth=self.keystone_auth)
self.cinder = cinder_client.Client(OS_USERNAME, OS_PASSWORD, OS_TENANT_NAME, OS_AUTH_URL, service_type="volume")
self.volumes = self.cinder.volumes.list()
self.snapshots = self.cinder.volume_snapshots.list()
self.nova = client.Client("2.1", session=self.keystone_session)
self.servers = self.nova.servers.list()
self.kwargs = {
'auth_url': auth_url,
'session': self.keystone_session,
'auth': self.keystone_auth,
'service_type': 'orchestration'}
def output(self):
if sys.argv[5] == 'servers':
print(self.servers)
return MockFile(self.servers, mirror_on_stderr=True)
elif sys.argv[5] == 'volume':
return MockFile(self.volumes, mirror_on_stderr=True)
elif sys.argv[5] == 'cinder':
return MockFile(self.cinder, mirror_on_stderr=True)
if __name__ == '__main__':
luigi.run(["--local-scheduler"],OpenstackHelper())
出力関数 –
の中でprint(self.servers)でエラーが発生しました。出力が既に存在するかどうかを確認するためにoutput()が最初に実行され、その場合run()が実行されません。 – MattMcKnight
@MattMcKnightしかし、私は最初にluigi.runを呼び出しています。私が理解しているように、luigi.runが最初にトリガしてから関数を出力するべきではないのですか?あるいは、出力が最初に出力をチェックして出力が既に存在するかどうかを確認します。その場合は、実行機能を実行しません。 –