转载

深入了解 SoftLayer Python API: 第 2 部分

在我的前一篇博客中,我介绍了如何导航 SoftLayer Services 网站,以及如何有效查询 SoftLayer API。在这篇文章中,我将介绍在 python 客户端中使用 SoftLayer API 的其他方面。

让您了解从何处开始导航的服务列表

如果您阅读了本系列的第 1 部分,那么您应该掌握了在 SoftLayer 中查询资源数据的许多不错的技术,这样您就可以从任何服务有效地遵循数据线索追踪到其他服务,从而获得您想要的所有信息。关于查询 SoftLayer API,您需要知道的最后一件大事是:在包含了无数的 SoftLayer Services 网站中,您最好从哪儿开始追踪这些线索?Account 服务对许多数据类型来说都是一个很好的起点,但总是从这里开始不会让您获得一切。即使最终您可以得到开始使用 Account 服务所需的数据,但您通常也可以在其他地方找到一些捷径。我将有用的线索以及可以沿着每条线索找到的数据类型都放入一个列表中。该列表并不是一个详尽的列表,但希望您能将它作为您的起点。

帐户

  • getNetworkVlans():返回帐户中的网络 VLAN,该参数涉及子网和 primaryRouters
  • getHardware():返回硬件,该参数涉及数据中心、hardDrives、处理器、内存、networkCards 和 operatingSystem(涉及密码)
  • getVirtualGuests():返回 Virtual_Guest,该参数涉及 maxCpu、maxMemory 和 operatingSystem
  • getCurrentUser():返回 User_Customer,该参数涉及 childUsers 和权限
  • getuser():返回此帐户中的所有用户
  • getNetworkGateways():返回网关(Vyattas),该参数涉及与网关相关(通过网关路由)的 networkVlans,还涉及子网和 primaryRouters
  • getTickets():返回与帐户相关的票据
  • getOrders():返回此帐户的订单

位置

  • getDatacenters():返回数据中心,该参数涉及路由器等。

Product_Package

  • getAllObjects():返回可以订购的产品
  • getConfiguration():返回产品项的类别(部分),在订购时可以指定产品类别
  • getitemprice():返回产品的各种部件,可以在订购时指定

Billing_Order

  • getOrderStatuses():返回此帐户所有订单的状态

User_Customer

  • getChildUsers():返回充当当前用户的子用户的用户

回页首

修改 SoftLayer 资源的服务

现在,您是一个查询 SoftLayer API 的专家,让我们继续执行修改 SoftLayer 资源的 SoftLayer API 调用。基本原理是相似的:找到合适的服务和该服务中的方法,填写数据结构,该数据结构类似于您将来查询它时的样子,如果该资源是一个现有资源,那么可以使用 id 来识别它。有许多 SoftLayer API 方法都可以用来修改资源,但是为了向您解释它们是什么样子的,我为您提供了一个具体的示例。

  • 硬件

editSoftwareComponentPasswords():通知 SoftLayer 您更改了 CCI 或裸机服务器的密码,因为它在 SoftLayer 门户中正确显示了密码,以便 SoftLayer 技术支持人员可以在您有问题时访问 CCI

  • Network_Gateway

bypassVlans():更改与某个网关相关的 VLAN,将它从 routed 状态更改为 bypassed 状态

unbypassVlans():更改与某个网关相关的 VLAN,将它从 bypassed 状态更改为 routed 状态

  • Network_Gateway_Vlan

createObjects():将 VLAN 与某个网关相关联(也就是说,让网关称为它们的路由器)

deleteObjects():从此网关分离 VLAN

  • Product_Order

placeOrder():从 SoftLayer 订购资源

verifyOrder():确认您的订单数据结构是有效的,但实际上您并没有订购该资源

  • Billing_Item

cancelItem():将资源还给 SoftLayer(按月返回,它们在月底前仍然是可用的)

对于我们的详细的示例,我们将 VLAN 与网络网关相关联。在 SoftLayer Services 网站上,我们发现 Network_Gateway_Vlan 服务有一个名为 createObjects 的方法,该方法将VLAN 与某个网关相关联。我们看到,参数方法采用了一个 Network_Gateway_Vlan 数据类型对象数组。

所以,该示例将:

  • 获得我们想要与 VLAN 相关联的 id
  • 获得与网关相关的 VLAN 的 id 值
  • 构建一个 Network_Gateway_Vlan 对象数组,填写该数据类型的本地属性
  • 调用 Network_Gateway_Vlan.createObjects(),向它提供该数组
import SoftLayer import pprint # Get the SoftLayer API client object client = SoftLayer.Client(username=myuser, api_key=mykey, endpoint_url=SoftLayer.API_PUBLIC_ENDPOINT) # Get the id of the gateway you want to associate the VLANs to gateways = client['Account'].getNetworkGateways(mask='id, name',   filter={'networkGateways': {'name': {'operation': 'v1'}}}) gatewayid = gateways[0]['id'] # Get all of the VLANs that are allowed to be associated with this gateway. # For this example, we assume we want to associate all of them. vlans = client['Network_Gateway'].getPossibleInsideVlans(id=gatewayid, mask='id, vlanNumber') # Build the array of Network_Gateway_Vlan objects. # It's local properties are: bypassFlag, id, networkGatewayId, networkVlanId. objs = [] for v in vlans: # Fill in the object properties. We set id to None, because SoftLayer will fill that in when the # objects are created. objs.append({'bypassFlag':True, 'id':None, 'networkGatewayId':gatewayid, 'networkVlanId':v['id']}) # Use the Network_Gateway_Vlan service to associate them assocVlans = client['Network_Gateway_Vlan'].createObjects(objs) # the output is the created Network_Gateway_Vlan objects pprint.pprint(assocVlans) 

回页首

SoftLayer 异常

您可能注意到示例代码中没有进行错误检查。那是因为我打算在这里介绍 SoftLayer 异常。主要的 SoftLayer API 异常类是 SoftLayer.exceptions.SoftLayerAPIError,它有两个成员:faultCode 和 faultString。您可以捕获以下 API 错误:

import SoftLayer # Get the SoftLayer API client object client = SoftLayer.Client(username=myuser, api_key=mykey, endpoint_url=SoftLayer.API_PUBLIC_ENDPOINT)

在 http://sldn.softlayer.com/article/Exception-Handling-SoftLayer-API 的底部,还可以看到一些常见的 faultStrings,提供它们是为了防止您想要在您代码的 "except" 部分单独处理它们。

在我的下一篇博客中,将详细介绍如何使用 API 订购 SoftLayer 资源。

本博客最先发表于 SoftLayer 官方网站:Going Further with the SoftLayer API Python Client - Part 2

正文到此结束
Loading...