一个基于twisted的juju客户端。
txjuju的Python项目详细描述
txjuju提供基于twisted的工具 用于与Juju交互。这个 包括一个api客户端和一个cli包装器。图书馆有限 对于Python2,但同时支持juju 1.x和2.x。 Python3正在被关注。
注意,在txjujuju中只暴露了jujuju功能的一部分。 这是因为代码源于 Landscape项目,没有增长 远远超出了景观的需要。的正式python绑定 菊苣(python-libjuju) 通常会提供更好的体验。在某个时刻,python libjujuju 可能完全取代TXJUU。
关键部件
以下是txjuju的基本类:
- txjuju.api.Endpoint
- txjuju.api.Juju2APIClient和txjuju.api.Juju1APIClient
- txjuju.cli.Juju2CLI和txjuju.cli.Juju1CLI
另外,txjuju.prepare_for_bootstrap()特别有用。
有关详细信息,请参见DOC.rst。
示例用法
API客户端
fromtwisted.internetimportreactorfromtwisted.internet.deferimportinlineCallbacksfromtxjuju.apiimportEndpointendpoint=Endpoint(reactor,"ec2-1-2-3-4.compute-1.amazonaws.com")deferred=endpoint.connect()@inlineCallbacksdefconnected(client):yieldclient.login("user-admin","54830489236383334d1d9fd84adae72c")yieldclient.setAnnotations("unit","1",{"foo":"bar"})deferred.addCallback(connected)reactor.run()
cli包装器
importpprintfromtwisted.internetimportreactorfromtwisted.internet.deferimportinlineCallbacks,returnValuefromtxjujuimportprepare_for_bootstrapfromtxjuju.cliimportBootstrapSpec,Juju1CLIcfgdir="/tmp/my-juju"spec=BootstrapSpec("my-env","lxd")cli=Juju1CLI(cfgdir)@inlineCallbacksdefbootstrap():prepare_for_bootstrap(spec,"1.25.6",cfgdir)yieldcli.boostrap(spec.name,"0")raw=yieldcli.api_info(spec.name)returnValue(raw)deferred=bootstrap()deferred.addCallback(lambdav:pprint.pprint(v))reactor.run()
贡献
如果你想为txjuju做贡献,请随时打开一个问题或 给我们一个请求。就从txjuju借钱而言, 代码已获得lgplv3许可。
测试
要运行测试套件,请运行make test或 python2 -m unittest txjuju.tests.test_XXX。