SoftLayer API从硬件中检索所有网络设备



我正在使用ruby应用程序以及'softlayer' gem来检索与我们的帐户相关的所有硬件(ge硬件)和虚拟机(getVirtualGuests)。一个关于区分网络设备和机器的问题出现了。我知道有单独的电话获取某些网络信息和设备。但是,我想知道网络设备信息是否属于gehardware/getVirtualGuests结果。"ge硬件"调用返回几个设备与"Vyatta"操作系统,所以我可以假设"ge硬件"检索我们所有的网络设备,以及?如果这是真的,是否有一种方法可以可靠地确定设备是网络设备而不是操作系统值?示例程序:

require 'rubygems'
require 'softlayer_api'
require 'pp'
client = SoftLayer::Client.new(:username => user, :api_key => api_key, :endpoint_url => endpoint_url, :timeout => 99999999)
account = client['Account'].object_mask("mask[virtualGuestCount,hardwareCount]").getObject()
bare_metal_machines_count = account["hardwareCount"]
for i in 0..(bare_metal_machines_count/30.0).ceil - 1
  list_of_baremetal_machines = client['Account'].result_limit(i*30,30).object_mask("mask[id, hostname, backendNetworkComponents[primarySubnet[podName]], hourlyBillingFlag, fullyQualifiedDomainName, provisionDate, datacenter[name], billingItem[recurringFee, associatedChildren[recurringFee], orderItem[description, order[userRecord[username], id]]], operatingSystem[id, softwareLicense[id, softwareDescription[longDescription]]], tagReferences[tagId, tag[name]], primaryIpAddress, primaryBackendIpAddress]").getHardware
  for x in 0..list_of_baremetal_machines.length - 1
    pp list_of_baremetal_machines[x]
  end
end

谢谢。

当您调用gehardware方法返回所有裸机服务器时,您看到几个"Vyatta"服务器的原因是因为它们也是裸机服务器,但是使用"Vyatta"操作系统。

您可以使用http://sldn.softlayer.com/reference/services/SoftLayer_Search/advancedSearch方法来获取和过滤数据,这是门户使用的方法。

这里有一些例子:

硬件列表:

# Get Hardware list using SoftLayer_Search::advancedSearch
#
# Important manual pages:
# see http://sldn.softlayer.com/reference/services/SoftLayer_Search/advancedSearch
#
# license <http://sldn.softlayer.com/article/License>
# author SoftLayer Technologies, Inc. <sldn@softlayer.com>
require 'rubygems'
require 'softlayer_api'
# Your SoftLayer API username.
SL_API_USERNAME = 'set me'
# Your SoftLayer API key.
SL_API_KEY = 'set me'
# Softlayer API public endpoint
API_PUBLIC_ENDPOINT = 'https://api.softlayer.com/xmlrpc/v3.1/'
softlayer_client = SoftLayer::Client.new(username: SL_API_USERNAME,
                                         api_key: SL_API_KEY,
                                         endpoint_url: API_PUBLIC_ENDPOINT)
search_service = softlayer_client.service_named('SoftLayer_Search')
filter_data = 'networkGatewayMemberFlag:0 _objectType:SoftLayer_Hardware'
begin
  # Display Hardware items same as Portal > Device List
  result = search_service.advancedSearch(filter_data)
  puts 'Process finished successfully'
  p result
rescue StandardError => e
  raise e
end

列出网关成员:

# Get Gateway Member list using SoftLayer_Search::advancedSearch
#
# Important manual pages:
# see http://sldn.softlayer.com/reference/services/SoftLayer_Search/advancedSearch
#
# license <http://sldn.softlayer.com/article/License>
# author SoftLayer Technologies, Inc. <sldn@softlayer.com>
require 'rubygems'
require 'softlayer_api'
# Your SoftLayer API username.
SL_API_USERNAME = 'set me'
# Your SoftLayer API key.
SL_API_KEY = 'set me'
# Softlayer API public endpoint
API_PUBLIC_ENDPOINT = 'https://api.softlayer.com/xmlrpc/v3.1/'
softlayer_client = SoftLayer::Client.new(username: SL_API_USERNAME,
                                         api_key: SL_API_KEY,
                                         endpoint_url: API_PUBLIC_ENDPOINT)
search_service = softlayer_client.service_named('SoftLayer_Search')
filter_data = 'networkGatewayMemberFlag:1 _objectType:SoftLayer_Hardware'
begin
  # Display Gateway Member items same as Portal > Device List
  result = search_service.advancedSearch(filter_data)
  puts 'Process finished successfully'
  p result
rescue StandardError => e
  raise e
end

netscaler列表:

# Get Netscaler list using SoftLayer_Search::advancedSearch
#
# Important manual pages:
# see http://sldn.softlayer.com/reference/services/SoftLayer_Search/advancedSearch
#
# license <http://sldn.softlayer.com/article/License>
# author SoftLayer Technologies, Inc. <sldn@softlayer.com>
require 'rubygems'
require 'softlayer_api'
# Your SoftLayer API username.
SL_API_USERNAME = 'set me'
# Your SoftLayer API key.
SL_API_KEY = 'set me'
# Softlayer API public endpoint
API_PUBLIC_ENDPOINT = 'https://api.softlayer.com/xmlrpc/v3.1/'
softlayer_client = SoftLayer::Client.new(username: SL_API_USERNAME,
                                         api_key: SL_API_KEY,
                                         endpoint_url: API_PUBLIC_ENDPOINT)
search_service = softlayer_client.service_named('SoftLayer_Search')
filter_data = '_objectType:SoftLayer_Network_Application_Delivery_Controller'
begin
  # Display Netscaler items same as Portal > Device List
  result = search_service.advancedSearch(filter_data)
  puts 'Process finished successfully'
  p result
rescue StandardError => e
  raise e
end

防火墙列表:

# Get Firewall list using SoftLayer_Search::advancedSearch
#
# Important manual pages:
# see http://sldn.softlayer.com/reference/services/SoftLayer_Search/advancedSearch
#
# license <http://sldn.softlayer.com/article/License>
# author SoftLayer Technologies, Inc. <sldn@softlayer.com>
require 'rubygems'
require 'softlayer_api'
# Your SoftLayer API username.
SL_API_USERNAME = 'set me'
# Your SoftLayer API key.
SL_API_KEY = 'set me'
# Softlayer API public endpoint
API_PUBLIC_ENDPOINT = 'https://api.softlayer.com/xmlrpc/v3.1/'
softlayer_client = SoftLayer::Client.new(username: SL_API_USERNAME,
                                         api_key: SL_API_KEY,
                                         endpoint_url: API_PUBLIC_ENDPOINT)
search_service = softlayer_client.service_named('SoftLayer_Search')
filter_data = '_objectType:SoftLayer_Network_Vlan_Firewall'
begin
  # Display Firewall items same as Portal > Device List
  result = search_service.advancedSearch(filter_data)
  puts 'Process finished successfully'
  p result
rescue StandardError => e
  raise e
end

列出所有设备:

# Get all items from Device list.
#
# Important manual pages:
#
# see http://sldn.softlayer.com/reference/services/SoftLayer_Search/advancedSearch
# license <http://sldn.softlayer.com/article/License>
# author SoftLayer Technologies, Inc. <sldn@softlayer.com>
require 'rubygems'
require 'softlayer_api'
# Your SoftLayer API username.
SL_API_USERNAME = 'set me'
# Your SoftLayer API key.
SL_API_KEY = 'set me'
# Softlayer API public endpoint
API_PUBLIC_ENDPOINT = 'https://api.softlayer.com/xmlrpc/v3.1/'
softlayer_client = SoftLayer::Client.new(username: SL_API_USERNAME,
                                         api_key: SL_API_KEY,
                                         endpoint_url: API_PUBLIC_ENDPOINT)
search_service = softlayer_client.service_named('SoftLayer_Search')
# The items with the following Device types should be displayed
# using the below filter:
# Bare Metal Server, Virtual Server, Firewall, Gateway Member, Netscaler,KVM/IP
filter_data = '_objectType:SoftLayer_Hardware,'
    'SoftLayer_Virtual_Guest,SoftLayer_Network_Vlan_Firewall,'
    'SoftLayer_Network_Application_Delivery_Controller '
begin
  # Display all items same as Portal > Device List
  result = search_service.advancedSearch(filter_data)
  puts 'Process finished successfully'
  p result
rescue StandardError => e
  raise e
end

最新更新