一个简单而强大的用于python和命令行的cloudstack api客户端。

cs的Python项目详细描述


Build StatusLicensePython versions

一个简单而强大的用于python和命令行的cloudstack api客户端。

  • Python2.7+和3.4+支持。
  • 对Python3.5+的异步支持。
  • 支持所有当前和将来的cloudstack api调用和参数。
  • 如果安装了pygments,则在命令行客户端中突出显示语法。
  • BSD许可证。

安装

pip install cs

# with the colored output
pip install cs[highlight]

# with the async support (Python 3.5+)
pip install cs[async]

# with both
pip install cs[async,highlight]

用法

在python中:

fromcsimportCloudStackcs=CloudStack(endpoint='https://api.exoscale.ch/compute',key='cloudstack api key',secret='cloudstack api secret')vms=cs.listVirtualMachines()cs.createSecurityGroup(name='web',description='HTTP traffic')

从命令行,这需要一些配置:

cat $HOME/.cloudstack.ini
[cloudstack]endpoint=https://api.exoscale.ch/computekey=cloudstack api keysecret=cloudstack api secret# Optional ca authority certificateverify=/path/to/certs/exoscale_ca.crt# Optional client PEM certificatecert=/path/to/client_exoscale.pem

然后:

$ cs listVirtualMachines
{"count":1,"virtualmachine":[{"account":"...",...}]}
$ cs authorizeSecurityGroupIngress \
cidrlist="0.0.0.0/0"endport=443startport=443\
securitygroupname="blah blah"protocol=tcp

当返回异步结果时,命令行客户端将进行轮询。禁用 轮询时,使用--async标志。

要查找列表cloudstack api调用,请转到 http://cloudstack.apache.org/api.html

配置

按以下顺序从多个位置读取配置:

  • CLOUDSTACK_ENDPOINTCLOUDSTACK_KEYCLOUDSTACK_SECRETCLOUDSTACK_METHOD环境变量,
  • 指向.ini文件的CLOUDSTACK_CONFIG环境变量,
  • 指向CA颁发机构证书文件的CLOUDSTACK_VERIFY(可选)环境变量,
  • 指向客户端pem证书文件的CLOUDSTACK_CERT(可选)环境变量,
  • 当前工作目录中的cloudstack.ini文件,
  • 主目录中的.cloudstack.ini文件。

从python代码中使用该配置方案:

fromcsimportCloudStack,read_configcs=CloudStack(**read_config())

注意,如果没有配置,read_config()可以提高SystemExit。 找到了。

CLOUDSTACK_METHOD或配置文件中的method项可以是 用于更改用于发出cloudstack请求的http动词。默认情况下, 请求是用get方法发出的,但是cloudstack支持post请求。 post可以用来克服cloudstack api中的一些长度限制。

CLOUDSTACK_TIMEOUT或配置文件中的timeout项可以 用于在发出cloudstack请求时更改http超时(在 秒)。默认值为10。

CLOUDSTACK_RETRY或配置文件中的retry项 (整数)可用于在上重试listqueryAsync请求 失败。默认值为0,表示不重试。

CLOUDSTACK_JOB_TIMEOUT或配置文件中的作业超时`项 (float)可用于设置在将fetch_result设置为true的情况下重试异步调用的时间。默认值是None,它将永远等待。

CLOUDSTACK_POLL_INTERVAL或配置文件中的poll_interval项(秒数,浮点)可用于设置轮询异步作业结果的频率。默认值为2。

CLOUDSTACK_EXPIRATION或配置文件中的expiration项 (整数)可用于设置签名的有效期。默认情况下,它选择 10分钟,但可以使用任何负值停用,例如-1。

CLOUDSTACK_DANGEROUS_NO_TLS_VERIFYdangerous_no_tls_verify条目 在配置文件中(布尔值)可用于停用TLS验证 使用https协议时生成。

可以在.cloudstack.ini中设置多个凭据。这允许选择 要与命令行标志一起使用的凭据或终结点。

[cloudstack]endpoint=https://some-host/api/computekey=api keysecret=api secret[exoscale]endpoint=https://api.exoscale.ch/computekey=api keysecret=api secret

用法:

$ cs listVirtualMachines --region=exoscale

可以选择使用CLOUDSTACK_REGION覆盖默认区域cloudstack

对于那些不想把任何秘密放在磁盘上的超级用户, CLOUDSTACK_OVERRIDES让您从 环境,即使存在于ini文件中。

跟踪http请求

偶尔,了解一下http调用的内容可能会很有用 在引擎盖下面。trace标志(或CLOUDSTACK_TRACE)就是这样做的:

$ cs --trace listVirtualMachines

$ cs -t listZones

异步客户端

cs为python中的异步/等待调用提供AIOCloudStack类 3.5+。

^{公关14}$

多个vm的异步部署

importasynciofromcsimportAIOCloudStack,read_configcs=AIOCloudStack(**read_config())machine={"zoneid":...,"serviceofferingid":...,"templateid":...}asyncdefmain():tasks=asyncio.gather(*(cs.deployVirtualMachine(name=f"vm-{i}",**machine,fetch_result=True)foriinrange(5)))results=awaittasks# Destroy all of them, but skip waiting on the job resultsawaitasyncio.gather(*(cs.destroyVirtualMachine(id=result['virtualmachine']['id'])forresultinresults))asyncio.run(main())

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有字符串的java JNA调用与带有字节[]的java JNA调用的行为不同   java基于键列表获取子映射   重启后永久增加java堆大小?   JavaHTTPS服务器:相互SSL身份验证   java为什么接受接口的方法会拒绝该接口的实现?   片段中的java视图无法应用于()   ms access Java SQL更新命令不工作   java将web服务自动打包和部署到Oracle Application Server 10g   java有没有办法在安卓 studio中为安卓时钟设置多个警报?   位于FTP服务器上的文件上的Java校验和md5   在Java中创建类时遇到问题。有些方法不太确定   java错误:在类chrome\u驱动程序中找不到主方法   通用海图(Javascript\Java)