用于python的profitbricks api客户端库

profitbricks的Python项目详细描述


#python sdk

版本:profitbricks sdk python**4.1.3**


处理](错误处理)
*[参考](参考)
*[数据中心](数据中心)
*[列出数据中心](列出数据中心)
*[检索数据中心](检索-a-数据中心)
*[创建数据中心](创建-a-数据中心)
*[更新数据中心](更新数据中心)
*[删除数据中心](删除数据中心)
*[位置](位置)
*[列出位置](列出位置)
*[获取位置](获取位置)
*[服务器](服务器)
*[列出服务器](列出服务器)
*[检索服务器](检索服务器)
*[创建服务器](创建服务器)
*[更新服务器](更新服务器)
*[删除服务器](删除服务器)
*[列出附加卷](列出附加卷)
*[附加卷](附加卷)
*[检索附加卷](检索附加卷)
*[分离卷](分离卷)
*[列出附加CD-ROM](列出附加CD-ROM)
*[附加CD-ROM](附加CD-ROM)
*[检索附加的CD-ROM](检索附加的CD-ROM)
*[分离CD-ROM](分离CD-ROM)
*[重新启动服务器](重新启动服务器)
*[启动服务器](启动服务器)
*[停止服务器](停止服务器)
*[图像](图像)
*[列出图像](列出图像)
*[获取图像](获取图像)
*[更新图像](更新图像)
*[删除图像](删除图像)
*[卷](卷)
*[列出卷](列出卷)
*[获取卷](获取卷)
*[创建卷](创建卷)
*[更新卷](更新卷)
*[删除卷](删除卷)
*[创建卷快照](创建卷快照)
*[还原卷快照](还原卷快照)
*[快照](快照)
*[列出快照](列出快照)
*[获取快照](获取快照)
*[更新快照](更新快照)
*[删除快照](删除快照)
*[IP块](IP块)
*[列出IP块](列出IP块)
*[获取IP块](获取IP块)
*[创建IP块](创建IP块)
*[删除IP块](删除IP块)
*[局域网]
*[列出局域网](列出局域网)
*[创建局域网](创建局域网)
*[获取LAN](获取LAN)
*[获取LAN成员](获取LAN成员)
*[更新LAN](更新LAN)
*[删除LAN](删除LAN)
*[网络接口(NIC)](网络接口NIC)
*[列出NIC](列出NIC)
*[获取nic](get-a-nic)
*[创建nic](create-a-nic)
*[更新nic](update-a-nic)
*[删除nic](delete-a-nic)
*[防火墙规则](防火墙规则)
*[列出防火墙规则](列出防火墙规则)
*[获取防火墙规则]规则](get-a-firewall-rule)
*[创建防火墙规则](create-a-firewall-rule)
*[更新防火墙规则](update-a-firewall-rule)
*[删除防火墙规则](delete-a-firewall-rule)
*[负载平衡器](负载平衡器)
*[列出负载平衡器](列出负载平衡器)
*[获取负载平衡器](获取负载平衡器)
*[创建负载平衡器](创建负载平衡器)
*[更新负载平衡器](更新负载平衡器cer)
*[列出负载平衡的NIC](列出负载平衡的NIC)
*[获取负载平衡的NIC](获取负载平衡的NIC)
*[将NIC与负载平衡器关联](将NIC与负载平衡器关联)
*[移除NIC关联](移除NIC关联)
*[用户管理](用户管理)
*[列表组](列表组)
*[获取组](获取组)
*[创建组](创建组)
*[更新组](更新组)
*[删除组](删除组)
*[列表共享](列出共享)
*[获取共享](获取共享)
*[添加共享](添加共享)
*[更新共享](更新共享)
*[删除共享](删除共享)
*[列出用户](列出用户)
*[获取用户](获取用户)
*[创建用户](创建用户)
*[更新用户](更新用户)
*[删除用户](删除用户)
*[列出组中的用户](列出组中的用户)
*[将用户添加到组](将用户添加到组)
*[从组](从组中删除用户)
*[列出资源](列出资源)
*[获取资源](列出资源)
*[合同资源](合同资源)
*[列出合同资源](列出合同资源)
*[请求](请求)
*[列出合同资源]请求](列出请求)
*[获取请求](获取请求)
*[获取请求状态](获取请求状态)
*[示例](示例)
*[列出所有数据中心](列出所有数据中心)
*[搜索图像](搜索图像)
*[保留IP块](保留IP块)
*[等待资源](等待资源)
*[组件生成](组件生成)
*[组合生成](组合生成)
*[支持](支持)
*[测试](测试)
*[贡献](贡献)

profitbricks sdk for python提供对profitbricks云api的访问。客户端库支持简单和复杂的请求。它是为使用python构建应用程序的开发人员设计的。

本指南将指导您完成库的设置和对api执行各种操作。

python的sdk包装profitbricks云api。所有的api操作都是通过ssl执行的,并使用profitbricks门户凭据进行身份验证。api可以在profitbricks中运行的实例中访问,也可以从任何可以发送https请求并接收https响应的应用程序直接通过internet访问。[注册](https://www.profitbricks.com/signup)获取profitbricks帐户。您在注册过程中设置的凭据将用于根据云API进行身份验证。


\python的profitbricks sdk可在[pypi]上获得(https://pypi.python.org/pypi/profitbricks)。您可以使用"pip"安装最新的稳定版本:


done!

password='your_password')

用您在注册过程中建立的profitbricks凭据替换*your_username*和*your_password*的值。


云api返回一个错误。有五种异常类型:

γ
pbnotfounderror 404找不到请求的资源。|
pbvalidationerror 422请求正文包含无效的json。|
pbratelimiteexceederror 429已超过云API速率限制。|
pberror other所有其他状态代码的一般异常。|

还包括演示用法的简短代码片段。

`client`是从profitbricks导入的profitbrickservice`类。client import profitbrickservice`


将此值设置为0到5之间的值会影响返回的数据量。根据查询的资源,返回的详细信息有所不同,但通常遵循此模式。


depth description
::-:--
0仅包含直接属性。不包括儿童。|
1返回直接属性和子级引用。|
2返回直接属性和子属性。|
3返回直接属性、子属性和子代引用。|
4返回直接属性、子属性和子代属性。|
5返回所有可用属性。|

默认情况下,此sdk设置*深度=1*,因为这在大多数情况下都很有效。您可能会发现,通过减少或增加响应对象中的可用数据,将*depth*设置为较低或较高的值可以简化以后的操作。


\data centers

virtual data centers(vdcs)是profitbricks平台的基础。VDC充当要创建的所有其他对象(例如服务器)的逻辑容器。您可以提供任意数量的vdc。VDC有自己的专用网络,并且在逻辑上彼此分割以创建隔离。


\提供。您可以提供可选的*depth*参数。

参见[深度](深度)部分。|

调用"list_datacenters":


--

|description
--::------
数据中心**是**字符串VDC的ID。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"get_data center":

response=client.get_datacenter(datacenter_id="uuid")

--


只需提供所需的*name*和*location*参数,就可以创建一个"简单"的vdc。此操作还可以通过为服务器、卷、LAN、和/或负载平衡器。

|

构建"数据中心"资源对象:

data center=datacenter(
name="数据中心名",
description="我的新数据中心",
location="de/fkb")


将对象传递给"创建数据中心":

=客户机。创建数据中心(数据中心=数据中心)


|
location**yes**string创建VDC的物理profitbricks位置。|
说明否字符串对VDC的说明,例如分段、生产。|
服务器无列表要创建的一个或多个[服务器对象](服务器资源对象)的列表。|
卷无列表要创建的一个或多个[卷对象](卷资源对象)的列表。|
要创建的一个或多个[局域网对象](局域网资源对象)的列表。|
loadbalancers no list要创建的一个或多个[load balancer objects](loadbalancer resource object)的列表。|









<

<












































<德国卡尔斯鲁厄|

**注意**:

*name的值不能包含以下字符:(@,/,",",",",")。
*一旦设置了vdc,就不能更改它的"位置"。

--


无论是按id还是作为create response对象,都可以通过调用"update_datacenter"方法更改其属性。某些参数不能使用"update_datacenter"更改。

|
name no string VDC的新名称。|
说明否字符串直流电源的新说明。|

将参数传递给"update_datacenter":

response=client.update_datacenter(
datacenter_id='uuid',
name="new name'
description="new description')

--


\小心!

下表描述了可用的请求参数:

|

将参数传递给"delete戋u datacenter":


--


locations是物理profitbricks数据中心,您可以在其中提供VDC。


` list_locations`操作将返回当前可用位置的列表。

没有要提供的请求参数。


--


下表描述了请求参数:

|

将参数传递给"get_location":


参数:

|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给'list_servers':

response=client.list_servers(datacenter_uid='uuid')

--



|description
--::------
数据中心**是**字符串VDC的ID。|
服务器id**是**字符串服务器的id。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"get_server":

datacenter_id='uuid',
server_id='uuid')

--


您可以配置其他属性,例如指定启动卷和将服务器连接到LAN。


下表描述了请求参数:

VDC|
server**是**对象描述正在创建的服务器的[服务器对象](服务器资源对象)。|

生成一个[server](server resource object)对象:

name='server name',
cores=1,
ram=2048,
description='my new server',
location='de/fkb')


将对象和其他参数传递给"create戋server":

datacenter戋id='uuid',
服务器=服务器)

|
cores**yes**int服务器的核心总数。|
ram**是**int服务器的内存量(MB),例如2048。大小必须以256 MB的倍数指定,最小值为256 MB;但是,如果将"ram_hot_plug"设置为*true*,则必须使用最小值为1024 MB。|
可用性区域否字符串服务器应存在的可用性区域。|
CPU系列否字符串设置CPU类型。""AMD Opteron"或"英特尔至强"。默认为"AMD Opteron"。|
引导卷id否字符串服务器将从中引导的卷id。如果不是*空*,则"boot\u cdrom"必须是*空*。|
启动光盘否字符串用于启动的光盘映像标识。如果不是*空*,则"boot_volume_id"必须是*空*。|
附加卷否列表要连接到服务器的现有卷ID的列表。|
创建卷否列表一个或多个要创建并附加到服务器的[卷对象](卷资源对象).
nics否列表一个或多个要在设置服务器时创建的[nic对象](nic资源对象)。|









更新服务器对服务器的属性执行更新。


|
服务器id**是**字符串服务器的id。|
name no string服务器的名称。|
cores no int服务器的核心数。|
ram no int服务器中的内存量。|
可用性区域否字符串服务器的新可用性区域。|
CPU系列否字符串设置CPU类型。""AMD Opteron"或"英特尔至强"。默认为"AMD Opteron"。|
启动卷编号|string用于引导的卷ID。如果不是*空*,则"boot\u cdrom"必须是*空*。|
启动光盘否字符串用于启动的光盘映像标识。如果不是*空*,则"boot_volume_id"必须是*空*。|

将参数传递给"update_server":

datacenter_id='uuid',
server_id='uuid',
name='new name')

--


**注意**:这不会自动删除连接到服务器的存储卷。删除存储卷需要单独的操作。

|
服务器ID**是**字符串要删除的服务器的ID。|

将参数传递给"delete懔server":

datacenter懔id=uuid',
server懔id=uuid')

--


描述请求参数:

|
服务器id**是**字符串服务器的id。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"get_attached_volumes":

datacenter_id='uuid',
server-id'uuid')







35 35 35 35 35
























<124 name必需;类型br/>数据中心|**是**字符串VDC的ID。|
服务器id**是**字符串服务器的id。|
volume_u id**是**字符串存储卷的ID。|

将参数传递给"附加卷":

response=客户端。附加卷(
数据中心id='uuid',
服务器id='uuid',
volume-id'uuid'uuid'










这将检索附加卷的属性。













































<>。|数据中心_id**是**字符串VDC的ID。|
服务器id**是**字符串服务器的id。|
卷id**是**字符串附加卷的id。|

将参数传递给"get_attached_volume":

datacenter_id='uuid',
server_id='uuid',
volume_id='uuid')

--

根据卷的"热插拔"设置,这可能会导致服务器重新启动。如果"disc_virtio_hot_unplug"设置为*true*,则不需要重新启动。

这将**不会**从您的VDC中删除卷。您需要单独请求删除卷。

|
服务器id**是**字符串服务器的id。|
卷id**是**字符串附加卷的id。|

将参数传递给"detach戋volume":

datacenter戋u id='uuid',
server戋u id='uuid',

--


ret查看连接到服务器的CD-ROM的列表。


下表描述了请求参数:


|
服务器id**是**字符串服务器的id。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"get_attached_cdroms":

datacenter_id'uuid',
server_id'uuid')

--


描述请求参数:

|
服务器id**是**字符串服务器的id。|
cd rom**是**字符串CD-ROM的ID。


将参数传递给"attach cdrom":

response=client.attach cdrom(
datacenter id='uuid',
server id='uuid',,

cd rom-id'uuid'











>您可以检索附加到服务器的特定cd-rom,您可以检索附加到服务器的特定cd-rom。



















<
<


<
<<124姓名;类型描述描述;
|数据中心_id**是**字符串VDC的ID。|
服务器id**是**字符串服务器的id。|
cd rom**是**字符串附加CD-ROM的ID。


将参数传递给"get_u attached_u cdrom":

response=client.get_u attached_u cdrom(
datacenter_u id='uuid',
server_id='uuid',,










35





/>

/>




<
数据中心**是**字符串|VDC的ID。|
服务器id**是**字符串服务器的id。|
cd rom**是**字符串所附CD-ROM的ID。


将参数传递给"detach戋cdrom":

response=client.detach戋cdrom(
datacenter戋u id='uuid',
server戋id='uuid',
cdrom_uid='uuid')

--


\如果要正常重新启动计算机,请不要使用此方法。这相当于关闭计算机并重新打开它。

|
服务器id**是**字符串服务器的id。|

将参数传递给"reboot戋server":

datacenter戋id戋uid',


--


如果在服务器停止时释放了DHCP分配的公用IP,则将分配一个新IP。

|
服务器id**是**字符串服务器的id。|

将参数传递给"start戋server":

datacenter戋u id='uuid',
server戋u id='uuid')

--

机器将被强制关闭,计费将停止,如果分配了公用IP,则将取消分配。


下表描述了请求参数:

键入description
--::------
数据中心**是**字符串VDC的ID。|
服务器id**是**字符串服务器的id。|

将参数传递给"stop\u server":

datacenter\u id='uuid',



















































<124;<124;<124;


<124;
<124;<124;<124;<124;
<124;
——————————————————————————————————————————————————————————————————————————————————————值0-5,影响返回的详细信息量。参见[深度](深度)部分。|

将参数传递给"list_images":


--

|
——:——————————————————————————————————————————————————————————————————————————————————————|

将参数传递给"get_image":


response=client.get_image('uuid')

--

您**无法**更新profitbricks提供的公共映像的属性。

|
name no string图像的名称。|
描述否字符串图像的描述。|
许可证类型否字符串快照的许可证类型:Linux、Windows、Windows2016、未知或其他。|
CPU热插拔否bool此卷可以进行CPU热插拔(不需要重新启动)
CPU热插拔否bool此卷可以进行CPU热插拔(不需要重新启动)
RAM热插拔否bool此卷可以进行内存热插拔(不需要重新启动)|
ram_u hot_u unplug no bool此卷能够进行内存热拔插(不需要重新启动)
nic_u hot_u plug no bool此卷能够进行nic hot plug(不需要重新启动)
nic hot_u unplug no bool此卷能够进行nic hot unplug(不需要重新启动)|
disc_u virtio_u hot_u plug no bool此卷能够进行virtio驱动器热插拔(不需要重新启动)
disc u virtio_u hot_u plug no bool此卷能够进行virtio驱动器热插拔(不需要重新启动)
disc u scsi_u hot_u plug no bool此卷能够进行SCSI驱动器热插拔(不需要重新启动)
disc_scsi_hot_u unplug no bool此卷能够进行SCSI驱动器热插拔(不需要重新启动)

您可以通过调用"update_image"方法更改映像的属性:

response=client.update_image(
image_id='uuid',
name='new name',
description='new description',
license_type='linux')

--


不能删除profitbricks提供的公共映像。

|

将参数传递给"delete懔image":


--


如果要检索附加到服务器的卷的列表,请参阅服务器部分中的[列出附加卷](列出附加卷)条目以了解详细信息。


下表描述了请求参数:

--::----
数据中心**是**字符串VDC的ID。|
深度否|int影响返回的详细信息量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"list_volumes":


--


|键入description
--::------
datacenter**yes**string VDC的ID。|
卷id**是**字符串卷的id。|

将参数传递给"get_volume":

datacenter_id='uuid',
volume_id='uuid')

--


这不会将卷附加到服务器。有关如何附加存储卷的详细信息,请参阅服务器部分中的[附加卷](附加卷)项。


下表描述了请求参数:

|VDC的ID。|
卷**是**对象要创建的[卷对象](卷资源对象)。|

生成"volume"资源对象:

name='name',
size=20,
bus='virtio',
type='hdd',
license\u type='linux',
availability_zone="zone_3")


将对象和参数传递给"create_volume":

response=client.create_volume(
datacenter_id="uuid",
volume=volume)

|
size**yes**int卷的大小(GB)。|
总线否字符串卷的总线类型(virtio或ide)。默认值:virtio。|
image**yes**string映像或快照ID。对于数据卷,可以保留为空,但是您需要设置"license"类型。默认值:*空*
图像**是**字符串图像的别名。|
type**yes**string卷类型、硬盘驱动器或固态硬盘。默认值:hdd
license type**yes**string卷的许可证类型。选项:Linux、Windows、Windows2016、未知、其他。默认值:unknown
image_password**yes**string要在卷上为相应的根帐户或管理帐户设置的密码。此字段只能在创建请求中设置。读取时,它总是返回*空*。密码必须包含8-50个字符。只允许这些字符:[efghjkmnpqrstuvxefghjklmnpqrstuvx23456789]
ssh_keys**yes**string ssh keys以允许通过ssh访问卷。|
可用性区域否字符串分配给卷的存储可用性区域。有效值:自动、区域1、区域2或区域3。这仅适用于HDD卷。设置ssd卷时保留空白或设置为自动。|

下表概述了可以定义的各种许可证类型:


|
windows在Microsoft Windows Server 2008和2012操作系统中使用此选项。|
Linux用于Linux发行版,如CentOS、ubuntu、Debian等
其他用于任何与其他许可证类型不匹配的卷。|
未知此值可能在上载图像且未设置许可证类型时继承。请使用上面的选项之一。|

下表概述了当前支持的存储可用性区域:


| zone_3 fire zone 3

**注意:**创建卷时,需要提供"image"或"license_type"参数。需要"license\u type",但如果提供了"image",则该类型已设置,无法更改。使用其中一个profitbricks正式映像创建卷时,需要提供"image_password"或"ssh_keys"参数。只有官方profitbricks提供的映像支持"ssh_keys"和"image_password"参数。

--


有一些限制:

您可以增加现有存储卷的大小。不能减小现有存储卷的大小。如果相关的热插拔设置(`disc virtio_hot_plug`,`disc virtio_hot_plug`)设置为*true*,则卷大小将增加,而不需要重新启动。附加的容量不会自动添加到任何分区中,因此之后您需要在操作系统中处理它。一旦增大了卷大小,就不能减小卷大小。

因为正在修改现有卷,只要所做的更改满足创建卷的要求,则不需要任何请求参数。

|**是**字符串VDC的ID。|
卷id**是**字符串卷的id。|
name no string卷的名称。|
size no int卷的大小(GB)。更新时只能增加"大小"。|
总线否字符串卷的总线类型(virtio或ide)。默认值:virtio。|
许可证类型否字符串卷的许可证类型。选项:Linux、Windows、Windows2016、未知、其他。根据用于创建卷的"图像",尝试更新"许可证类型"时可能会出错。例如,您无法更新从profitbricks提供的os映像创建的卷的"license"类型。|

**注意**:尝试更改更新请求中的"映像"、"类型"或"可用性区域"将导致错误。


size=6,
name="new name')

--


\这将导致从数据中心删除卷。小心使用。

|
卷id**是**字符串卷的id。|

将参数传递给"delete戋volume":

datacenter戋u id='uuid',
volume戋u id='uuid')

--

可以使用快照创建新存储卷或还原存储卷。

|
卷id**是**字符串卷的id。|
name no string快照的名称。|
描述否字符串快照的描述。|

将参数传递给"create_snapshot":

response=client.create_snapshot(
datacenter_id='uuid',
volume_id='uuid',
name='snapshot name',
description="快照描述")

--


我会将快照还原到卷上。快照创建为另一个映像,可用于创建新卷或还原现有卷。

的VDC。|
卷id**是**字符串卷的id。|
快照**是**字符串快照的ID。|

将参数传递给"restore_snapshot":

response=client.restore_snapshot(
datacenter_id='uuid',
volume_id='uuid',

















\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\快照列表快照





































depth no int影响返回的详细信息量。参见[深度](深度)部分。|

将参数传递给"list_snapshots":


--


|description
--::------
快照**是**字符串快照的ID。|

将参数传递给"get_snapshot":


--


|必需的类型描述
--::-:----
快照**是**字符串快照的ID。|
name no string快照的名称。|
描述否字符串快照的描述。|
许可证类型否字符串快照的许可证类型:Linux、Windows、Windows2016、未知或其他。|
CPU热插拔否bool此卷可以进行CPU热插拔(不需要重新启动)
CPU热插拔否bool此卷可以进行CPU热插拔(不需要重新启动)
RAM热插拔否bool此卷可以进行内存热插拔(不需要重新启动)|
ram_u hot_u unplug no bool此卷能够进行内存热拔插(不需要重新启动)
nic_u hot_u plug no bool此卷能够进行nic hot plug(不需要重新启动)
nic hot_u unplug no bool此卷能够进行nic hot unplug(不需要重新启动)|
disc_u virtio_u hot_u plug no bool此卷能够进行virtio驱动器热插拔(不需要重新启动)
disc u virtio_u hot_u plug no bool此卷能够进行virtio驱动器热插拔(不需要重新启动)
disc u scsi_u hot_u plug no bool此卷能够进行SCSI驱动器热插拔(不需要重新启动)
disc_scsi_hot_u unplug no bool此卷能够进行SCSI驱动器热插拔(不需要重新启动)


name'newname',
description'newdescription')

























































<<|快照**是**字符串快照的ID。|

将参数传递给"delete戋u snapshot":



--


|description
--::------
ip block**yes**string IP块的ID。|

将参数传递给"get_ip block":


--

创建IP块与其他一些可用的创建操作稍有不同。IP块不连接到特定的VDC,而是连接到一个位置。因此,必须指定有效的"location"和"size"参数,该参数指示要在IP块中保留的IP地址数。使用IP块中IP地址的任何资源都必须位于同一"位置"。

|
ipblock**是**对象要创建的[ipblock对象](ipblock资源对象)。|

要创建IP块,请定义"ip block"资源对象:

name=IP块名,
size=4,
location='de/fkb'


















**是**字符串这必须是地点:US/LAS、US/EWR、de/FRA、de/FKB。|
size**是**int所需IP块的大小。|
name no string ip块的描述性名称


下表概述了当前支持的位置:




value国家城市
name no string string德国|德国卡尔斯鲁厄










:-:————
ip block_id**是**| string IP块的ID。|










>response=client.delete\ipblock'uuid'








































name 124;必需|键入description
--::------
datacenter**yes**string VDC的ID。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"list_lan":


--


|
--::----
数据中心**是**字符串VDC的ID。|
lan**是**对象描述要创建的lan的[lan对象](lan资源对象)。|

创建"lan"资源对象:

name='lan name',
public=true)



lan=lan)


-:-:----
name no string您的LAN的名称。|
public**yes**bool布尔值,指示LAN是否面向公共Internet。|
nics no list连接到LAN的一个或多个NIC ID。|





**字符串VDC的ID。|
lan_u id**是**int局域网的id。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"get-lan":

数据中心id=uuid',
lan-id=id)








\\\\\\\\\\\\\获取lan成员




>检索属于lan的一部分的nic的列表。
































数据中心id**是**|字符串VDC的ID。|
lan_u id**是**int局域网的id。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|


lan-id=id)






数据中心_id**是**字符串的idVDC。|
lan_u id**是**int局域网的id。|
名称否字符串LAN的描述性名称。|
public no bool布尔值,指示LAN是否面向公共Internet。|
ip_u fail over no list ip故障转移指令列表。|

将参数传递给"update-lan":

ip-failover['ip']='ip-address'
ip-failover['nicuuid']='uuid'

response=client.update-lan(
datacenter\u id='uuid',
lan id=id,
name='new lan name',
public=true,
ip故障转移=[ip故障转移]









































<



<


<

<
<124;name;必需;类型;描述<124;描述/>数据中心id**是**|字符串VDC的ID。|
lan_id**是**字符串局域网的ID。|

将参数传递给"delete\u lan":

response=client.delete\u lan(
datacenter\u id="datacenter\u id',

lan-id=id














\\\\\\\\\\\\\\\\\\\\\\\\\\网络接口(nicnics)列表nics


































|数据中心_id**是**字符串VDC的ID。|
服务器id**是**字符串服务器的id。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"list-nics":

response=client.list-nics(
数据中心id=uuid',











<35<35<35<35<35<35<35<



检索给定nic的属性。

























<124;name需要类型;数据中心**是**字符串ID直流电的。|
服务器id**是**字符串服务器的id。|
nic_u id**是**字符串nic的id。|
depth no int影响返回的详细信息量。参见[深度](深度)部分。|

将参数传递给"get-nic":

datacenter_id='uuid',
server_id='uuid',
nic_id='uuid')

--

请求参数:

|
服务器id**是**字符串服务器的id。|
nic**是**对象描述要创建的nic的[nic对象](nic资源对象)。|

创建"nic"资源对象:

name='nic name',
dhcp=true,
lan=1,
nat=false)


将对象和参数传递给"create-nic":

response=client.create-nic(
datacenter\u id='uuid',
服务器id='uuid',
nic=nic)

|
ips no list分配给NIC的IP地址。|
dhcp no bool如果要在NIC上禁用dhcp,请设置为*false*。默认值:*true*。|
lan**是**int NIC将使用的LAN ID。如果LAN ID不存在,将创建它。|
nat no bool表示私有IP地址具有对公共互联网的出站访问。|
防火墙激活否bool将此设置为*true*启用profitbricks防火墙,*false*禁用。|
防火墙规则否列表要使用NIC创建的[防火墙规则对象](防火墙规则资源对象)列表。|

--

您还可以向NIC添加其他保留的公用IP。

用户可以手动指定和分配专用IP。专用网络的有效IP地址是10.0.0.0/8、172.16.0.0/12或192.168.0.0/16。

|
服务器id**是**字符串服务器的id。|
nic_u id**是**字符串nic的id。|
name no string NIC的名称。|
ips no list分配给NIC的IP,表示为字符串列表。|
dhcp no bool布尔值,指示NIC是否正在使用dhcp。|
LAN no int NIC所在的LAN ID。|
nat no bool表示私有IP地址具有对公共互联网的出站访问。|
防火墙激活否bool将此设置为*true*启用profitbricks防火墙,*false*禁用。|

将参数传递给"update-nic":

datacenter-id='uuid',
server-id='uuid',
nic-id='uuid',
name='new name')

--

下表描述了请求参数:

|
服务器id**是**字符串服务器的id。|
nic_u id**是**字符串nic的id。|








response=client.delete_nic(
datacenter_id'uid'uid',
server_id'uid'uid',



























检索一个防火墙规则列表,检索一个防火墙规则列表








是的与特定NIC关联。


下表描述请求参数:


|
服务器id**是**字符串服务器的id。|
nic_u id**是**字符串nic的id。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"get_firewall_rules":

datacenter_id='uuid',
server_id='uuid',
nic'u id'uuid')












获取给定的防火墙规则的属性。








































<124;name;name 124;数据中心id**是**|字符串VDC的ID。|
服务器id**是**字符串服务器的id。|
nic_u id**是**字符串nic的id。|
防火墙规则id**是**字符串防火墙规则的id。|

将参数传递给"get_firewall_rule":

datacenter_id="uuid",
loadbalancer_id="uuid",
nic_id="uuid",












\\\\\\\创建防火墙规则这将向nic添加防火墙规则。

























<124;name必需;type描述;













数据中心|**是**字符串VDC的ID。|
服务器id**是**字符串服务器的id。|
nic_u id**是**字符串nic的id。|
防火墙规则**是**对象描述要创建的防火墙规则的[FirewallRule对象](防火墙规则资源对象)。|

创建"firewallrule"资源对象:

fwrule=firewallrule(
name='allow ssh',
protocol='tcp',
source\u mac='01:23:45:67:89:00',
port\u range\u start=22,
port_range_end=22)


将对象和参数传递给"create_firewall_rule":

datacenter_id='uuid',
loadbalancer_id='uuid',
nic id='uuid',,
防火墙规则=fwrule)

|
协议**是**字符串规则的协议:TCP、UDP、ICMP、Any。|
source_mac no string仅允许来自相应mac地址的通信量。有效格式:aa:bb:cc:dd:ee:ff。一个*空*值允许所有源MAC地址。|
source_ip no string仅允许来自相应IPv4地址的流量。*null*值允许所有源IP。|
target_ip no string如果目标NIC有多个IP地址,则只允许定向到NIC的相应IP地址的通信。*null*值允许所有目标IP。|
port_u range_u start no string定义如果选择协议TCP或UDP,则允许的端口的开始范围(从1到65534)。将"port_range_start"和"port_range_end"值保留为*空*以允许所有端口。|
port_range_u end no string定义如果选择协议TCP或UDP,则允许端口的结束范围(从1到65534)。将"port_range_start"和"port_range_end"值保留为*空*以允许所有端口。|
icmp_type no string如果选择了协议icmp,则定义允许的类型(从0到254)。*null*值允许所有类型。|
icmp_code no string如果选择协议icmp,则定义允许的代码(从0到254)。空值允许所有代码。|

--

墙规则

对现有防火墙规则执行更新。您将注意到某些参数,如"protocol"无法更新。如果"协议"需要更改,您可以[删除](delete-a-firewall-rule)防火墙规则,然后[创建](create-a-firewall-rule)新规则来替换它。

| VDC的ID。|
服务器id**是**字符串服务器的id。|
nic_u id**是**字符串nic的id。|
防火墙规则id**是**字符串防火墙规则的id。|
name no string防火墙规则的名称。|
source_mac no string仅允许来自相应mac地址的通信量。有效格式:aa:bb:cc:dd:ee:ff。一个*空*值允许所有源MAC地址。|
source_ip no string仅允许来自相应IPv4地址的流量。*null*值允许所有源IP。|
target_ip no string如果目标NIC有多个IP地址,则只允许定向到NIC的相应IP地址的通信。*null*值允许所有目标IP。|
port_u range_u start no string定义如果选择协议TCP或UDP,则允许的端口的开始范围(从1到65534)。将"port_range_start"和"port_range_end"值保留为*空*以允许所有端口。|
port_range_u end no string定义如果选择协议TCP或UDP,则允许端口的结束范围(从1到65534)。将"port_range_start"和"port_range_end"值保留为*空*以允许所有端口。|
icmp_type no string如果选择了协议icmp,则定义允许的类型(从0到254)。*null*值允许所有类型。|
icmp_code no string如果选择协议icmp,则定义允许的代码(从0到254)。空值允许所有代码。|

将参数传递给"update_firewall_rule":

datacenter_id='uuid',
loadbalancer_id='uuid',
nic_id='uuid',
firewall_rule_id='uuid',,
name="updated name")











删除防火墙规则。















<









datacenter数据中心id是数据中心id数据中心id;VDC的ID。|
服务器id**是**字符串服务器的id。|
nic_u id**是**字符串nic的id。|
防火墙规则id**是**字符串防火墙规则的id。|

将参数传递给"delete_firewall_rule":

datacenter_id='uuid',
server_id='uuid',
nic id='uuid',,
防火墙规则'u id'uuid')

--


|
--::----
数据中心**是**字符串VDC的ID。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"list_loadbalancers":

response=client.list_loadbalancers(datacenter_id'uuid')

--


参数:

|
load balancer_u id**是**字符串负载平衡器的ID。|

将参数传递给"get-loadbalancer":

response=client.get-loadbalancer(
数据中心_id='uuid',
load balancer_uid='uuid')

--

\负载平衡器可用于公共或私有IP通信。

|
load balancer**是**对象描述要创建的负载平衡器的[loadbalancer对象](负载平衡器资源对象)。|

创建"load balancer"资源对象:

loadbalancer=loadbalancer(
name="loadbalancer name",
dhcp=true)


load balancer=loadbalancer)


|
IP否字符串负载平衡器的IPv4地址。所有连接的NIC都将继承此IP。|
dhcp no bool表示负载平衡器是否将使用dhcp保留IP。|
balancednics no list参与负载平衡的nic id列表。所有平衡的NIC都继承负载平衡器的IP。|








>更新负载平衡器

>更新负载平衡器的属性








>下表描述了请求参数:


















name no string负载平衡器的名称。|
ip no string负载平衡器的ip。|
dhcp no bool表示负载平衡器是否将使用dhcp保留IP。|

将参数传递给"update-loadbalancer":

response=client.update-loadbalancer(
datacenter-id='uuid',
loadbalancer-id='uuid',













>删除指定的负载平衡器。




>下表描述了请求参数:




























负载均衡器id**是**字符串负载均衡器的id。|

将参数传递给"delete\u loadbalancer":

response=client.delete\u loadbalancer(
datacenter\u id='uuid',
load balancer_uid='uuid')

--


|
--::----
数据中心**是**字符串VDC的ID。|
load balancer_u id**是**字符串负载平衡器的ID。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"get_loadbalancer_members":

datacenter_id="uuid",

loadbalancer'u id'uuid'







<
<

<
<

<





















<

<




<124//<124
|数据中心_id**是**字符串VDC的ID。|
load balancer_u id**是**字符串负载平衡器的ID。|
nic_u id**是**字符串nic的id。|
depth no int影响返回细节量的0-5整数值。参见[深度](深度)部分。|

将参数传递给"get loadbalanced"nic:

response=client.get_loadbalanced_nic(
datacenter_id='uuid',
load balancer_id='uuid',
nic_id='uuid')

--

负载平衡。

下表描述了请求参数:

|
load balancer_u id**是**字符串负载平衡器的ID。|
nic_u id**是**字符串nic的id。|

将参数传递给"add廑loadbalanced廑nics":

datacenter廑u id='uuid',
loadbalancer廑uuid',


具有负载平衡器的NIC。


下表描述了请求参数:


|
load balancer_u id**是**字符串负载平衡器的ID。|
nic_u id**是**字符串要从负载平衡器中删除的nic的id。|








>response=client.remove_loadbalanced_nic(
>datacenter_id'uid'uid',
>loadbalancer_id'uid'uid',






































检索所有组的列表。

|
































































<
组ID**是**|字符串组的ID。|
depth no int影响返回细节量的0-5整数值。|


response=client.get_group(group'u id'uuiid'uuiid'uuiid')






——
|名称**是**字符串组的ID。|
创建数据中心否布尔表示是否允许组创建虚拟数据中心。|
创建快照否布尔表示是否允许组创建快照。|
reserve_ip no bool表示是否允许组保留IP地址。|
访问活动日志否bool表示是否允许组访问活动日志。|

组=组(
名称='my-group',
创建数据中心=真,
创建快照=假,
保留IP=真,
access_activity_log=false)


--

|
--::----
group id**yes**string组的id。|
name**是**字符串组的ID。|
创建数据中心否布尔表示是否允许组创建虚拟数据中心。|
创建快照否布尔表示是否允许组创建快照。|
reserve_ip no bool表示是否允许组保留IP地址。|
访问活动日志否bool表示是否允许组访问活动日志。|

响应=客户端。更新组(
组id='uuid',
name='my-group',
create_datacenter=false,
create_snapshot=true,
reserve_ip=false,



>


















































<124;name名称必需类型描述组**是**字符串的ID这个小组。|


response=client.delete_group(group_id'uuiid'uuiid'uuiid')

——



_id**是**字符串组的ID。|
depth no int影响返回细节量的0-5整数值。|

response=客户端。列出共享(组id='uuid')

--


|
--::----
group id**yes**string组的id。|
资源id**是**字符串资源的id。|
depth no int影响返回细节量的0-5整数值。|

响应=客户端。获取共享(
组id='uuid',











组**是**字符串的ID组。|
资源id**是**字符串资源的id。|
edit_u privilege no string表示组有权编辑资源的权限。|
share_u privilege no string表示组具有共享资源的权限。|

响应=客户端。添加共享(
组id='uuid',
资源id='uuid',
编辑特权=真,
share-privilege=true)







组ID|**是**字符串组的ID。|
资源id**是**字符串资源的id。|
edit_u privilege no string表示组有权编辑资源的权限。|
share_u privilege no string表示组具有共享资源的权限。|

响应=客户端。更新共享(
组id='uuid',
资源id='uuid',
编辑特权=true,
共享特权=true)

--

| description
--::------
group_id**yes**string组的id。|
资源id**是**字符串资源的id。|




response=client.delete共享资源(
group'uid'uuid',






































==-----
;--
深度否整数影响返回的详细信息量的0-5。|













<35<35<35<35<35<






















用户id





124; string用户的ID。|
depth no int影响返回细节量的0-5整数值。|

响应=客户端。获取用户(用户id='uuid')




















>下表描述了请求参数:










>









lastname**是**bool用户的名称。|
e mail**是**bool用户的电子邮件地址。|
password**是**bool用户的密码。|
administrator no bool分配用户具有管理权限。|
force_u secu_u auth no bool表示是否应为用户强制进行安全(双因素)身份验证。|

user=user(
firstname='john',
lastname='doe',
email='no-reply@example.com',
password='secretpassword123',
administrator=true,
force-secu-auth=false)




response=client.create用户(用户)








————
|user_id**是**字符串用户的ID。|
firstname**是**字符串用户的名称。|
lastname**是**bool用户的名称。|
e mail**是**bool用户的电子邮件地址。|
administrator**是**bool指定用户具有管理权限。|
force_u secu_u auth**yes**bool指示是否应为用户强制进行安全(双因素)身份验证。|

response=client.update_user(
user_uid='uuid',
firstname='john',
lastname='doe',
email='no-reply@example.com',
administrator=true,
force_secu auth=false)

--

用户。

|





--









\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\br/>group_u id**是**字符串|组的ID。|
depth no int影响返回细节量的0-5整数值。|


response=client.list用户组(group-id'uuid'uuid'uuid')







;----
|组**是**字符串组的ID。|
用户id**是**字符串用户的id。|

response=client.add_group_user(
group_id='uuid',















































用户id**是**字符串用户的id。|

response=客户端。删除用户组(
组id='uuid',
用户组id='uuid')

--


或者,检索特定类型的所有资源。

|
depth no int影响返回细节量的0-5整数值。|

response=client.list戋resources()


response=client.list戋resources(resource戋type='snapshot')

--

特定类型的资源。

|
资源id**是**字符串资源的id。|
depth no int影响返回细节量的0-5整数值。|

response=client.get_resource(resource_id="uuid")


response=client.get_resource(
resource_type="datacenter",
资源id='uuid')

--

|
--::----
depth no int影响返回的详细信息量的0-5整数值。|

response=client.list_contracts()

--


请求

检索请求列表。

参见[深度](深度)部分。|

将参数传递给"list_requests":


--

此操作与用于获取请求状态的"get_request"方法相同,但其响应由传递给*status*的布尔值决定。若要获取有关请求本身的详细信息,请传递*status*of*false*


下表描述了请求参数:

|
status**yes**bool设置为*false*以返回请求详细信息。|

将参数传递给"get_request":

request_uid',
status=false)

--


此操作与用于获取请求详细信息的"get_request"方法相同,但其响应由传递给*status*的布尔值决定。若要获取请求状态,请传递*status*为*true*


下表描述了请求参数:

-::-----
request id**yes**string请求的ID。|
status**yes**bool设置为*true*以返回请求的状态。|

将参数传递给"get_request":

request_uid',
status=true)

--


这些示例将假定凭据是使用环境变量设置的:


export profitbricks_username=username
export profitbricks_password=password


哎呀!/usr/bin/python


import json
import os



password=os.getenv('profitbricks_password'))

ers,indent=4)


/usr/bin/python


import os


from profitbricks.client import profitbricksservice



def find_image(conn,name,位置:
'
按部分名称和位置查找图像
'
图像=[]
对于连接列表中的项images()['items']:
if(item['properties']['location']==位置和
item['properties']['imagetype']='hdd'和
name.lower()(在项['properties']['name'].lower()):
images.append(item)
return images

password=os.getenv('profitbricks_password'))

位置:
打印"{0}\t{1}\t{2}"。格式(
图像['id',
图像['properties']['name',
图像['properties']['location'])

/usr/bin/python


import json
import os



password=os.getenv('profitbricks_password')



response=client.reserve_ipblock(ipblock)



依赖资源。在服务器和卷完成设置之前,无法将卷附加到服务器。因此,我们需要"wait_for_completion"方法,该方法将停止并等待服务器和卷完成配置,然后再将卷附加到服务器。


也就是说,通过将自定义组件(如服务器、卷和NIC)连接在一起。例如,可以在一个请求中配置服务器,然后在以下请求中配置一个或多个NIC和卷。然后,卷可以单独连接到服务器。

请注意,您需要等待每个单独的组件完成配置,然后才能在后续操作中使用它。这种行为如下所示。

/usr/bin/python


import json
import os


from profitbricks.client import profitbricksservice
from profitbricks.client import(
数据中心、局域网、服务器、网卡、卷,防火墙规则)

client=profitbricksservice(
username=os.getenv('profitbricks_username'),
password=os.getenv('profitbricks_password')

timeout=1800

中心',
说明='python sdk data center',
位置='us/las')


response=client.create_datacenter(datacenter=datacenter)
client.wait_for_completion(response,超时)
数据中心id=response['id']

创建服务器
server=server(
name='python sdk server',
ram=4096,
cores=4,
cpu戋family='intel戋xeon')

response=client.create戋server(datacenter戋id=datacenter戋id,server=server)
client.wait戋u completion(response,超时)
服务器id=response['id]


nat=false)

response=client.create_nic(
datacenter_id=datacenter_id,
server_id=server_id,
nic=nic)
client.wait_completion(response,timeout)
nic id=response['id]

=firewall rule(
name='allow ssh',
protocol='tcp',
source\u ip='0.0.0',
port\u range\u start=22,
port\u range\u end=22,
icmp\u type=none)

response=client.创建防火墙规则(
datacenter\u id=datacenter\u id,
服务器ID=服务器ID,
NIC ID=NIC ID,
防火墙规则=FWRULE)
客户端。等待完成(响应,超时)


图像='0d4f97f0-1689-11e7-97ce-525400f64d8d',
总线='virtio',
类型='hdd',
ssh u密钥=['ssh-rsa aaaab3nzac1yc2eaadaq…',
图像密码='s3cr3tpass0rd',
可用性区域=区域3')

response=client.create_volume(
datacenter_id=datacenter_id,
volume=volume1)
client.wait_completion(response,timeout)
volume1_id=response['id]

=客户端。附加卷(
datacenter_ID=datacenter_ID,
server_ID=server_ID,
volume_ID=volume1_ID)
客户端。等待完成(响应,超时)



类型='ssd',
总线='virtio',
许可证类型='other')


响应=客户端。创建卷(
数据中心ID=数据中心ID,
卷=卷2)
客户端。等待完成(响应,超时)
卷2 ID=响应['id]

#附加数据卷
响应=客户端。附加卷(
数据中心ID=数据中心ID,
服务器ID=服务器ID,
卷ID=卷2 ID)
客户端。等待完成(响应,超时)

live_datacenter=client.get_datacenter(datacenter_id=datacenter_id,depth=5)
print json.dumps(live_datacenter,indent=4)


这是通过嵌套相关资源来实现的。


多个服务器、卷、局域网和负载平衡器可以嵌套在数据中心下,多个NIC和卷可以嵌套在服务器下,以及nics下的防火墙规则。

此示例将演示复合资源。

/usr/bin/python


import json
import os


from profitbricks.client import profitbricksservice
from profitbricks.client import datacenter,server,nic,volume,firewallrule

安装profitbricks连接
client=profitbricksservice(
username=os.getenv('profitbricks_username'),
password=os.getenv('profitbricks_password')


icmp_type=none)

c(
name='public nic',
dhcp=true,
lan=1,
firewall_active=true,
firewall_rules=[fwrule1],
nat=false)


lan=2)


ssh_keys=['ssh-rsa aaaaab3nzac1yc2eaaadaq…',
image_password='s3cr3tpass0rd',
availability_zone='zone_3')

定义一个数据卷
volume2=卷(
name='data volume',
size=100,
type='ssd',
总线='virtio',
许可证类型='other')


创建卷=[volume1,volume2])

#启动数据中心和嵌套资源配置
response=client。创建数据中心(数据中心)

#将第一个LAN设置为public
response=client.update_lan(
data center_id=datacenter_id,
lan_id=1,
name=public lan,
public=true)


client.wait_completion(response)

打印数据中心属性并嵌套resources
response=client.get_datacenter(datacenter_id=datacenter_id,depth=5)
打印json.dumps(response,indent=4)

如果您发现任何问题,请通过[DevOps Central Community](https://devops.profitbricks.com)或[Github's Issue System](https://github.com/profitbricks/profitbricks-sdk-python/issues)通知我们,我们会检查它的。

`测试文件夹。运行所有可用测试:

export profitbricks_username=username
export profitbricks_password=password

pip install-r requirements.txt
python-m unittest discover tests

运行单个测试:

python-m unittest discover tests测试数据中心.py

分叉(https://github.com/profitbricks/profitbricks-sdk-python/fork)
2.创建功能分支(`git checkout-b my new feature`)
3。提交更改(`git commit-am'add some feature`)
4.推到分支(`git push origin my new feature`)
5。创建新的拉取请求

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

推荐PyPI第三方库


热门话题
java数据结构和算法实现字典   java RecyclerView执行项目单击   php解析数据组织时出错。json。JSONException:值<!java类型的DOCTYPE。无法将lang.String转换为JSONObject(Android)   java无法修复ArrayIndexOutOfBoundsException   是否可以将java转换为java。util。Date()到int?   java J2ME本机Mp3播放器,用于播放大于1.5 MB的Mp3文件   java如何在JAXWS web服务上抛出自定义错误?   在Graphstream中检索鼠标单击的图形   java Servlet不显示来自数据库的图像   使用Jackson框架的@RequestBody注释的java Spring引导ObjectMapper   web服务如何查看为Java程序生成的SOAP请求和响应   java打印出三维数组并得到组合的整数值   使用ExtentReports打印Arraylist时发生java错误   java如何在历史日期运行oozie?   java LIBGDX:SpriteBatch draw未在iOS上绘制   java如何将两个具有一些公共实体的不同JSON转换为pojo?   java JPA/Hibernate试图在具有复合Id(和双重属性)的实体中存储太多参数   java如何使用@Resource注册bean