2016-08-17 47 views
0

总网络设备我使用的是Ruby应用程序与“SOFTLAYER”宝石一起检索所有硬件(getHardware),并关联到我们的帐户虚拟机(getVirtualGuests)。关于区分网络设备和机器的问题已经出现。我知道有不同的电话获取特定的网络信息和设备。但是,我想知道网络设备信息是否属于getHardware/getVirtualGuests结果。 “getHardware”调用正在返回几个带有“Vyatta”操作系统的设备,因此我可以假设“getHardware”也检索我们所有的网络设备?如果这是真的,有没有办法可以可靠地确定设备是否是除操作系统值以外的网络设备?示例程序:的SoftLayer API检索硬件

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 

谢谢。

回答

0

当您调用getHardware方法返回所有裸机服务器时,您看到几个“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. <[email protected]> 

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. <[email protected]> 

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 

列表netscalers:

# 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. <[email protected]> 

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. <[email protected]> 

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. <[email protected]> 

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 
+0

感谢尼尔森。从我所做的getHardware()调用中,我可以看到一个字段,它可以可靠地告诉我设备是否是网络设备?而不是看OS?或者我应该包含以下过滤器?: filter_data =“networkGatewayMemberFlag:0 _objectType:SoftLayer_Hardware” – haunm

+0

脚本列出我送你没有工作的硬件?您可以使用属性networkGatewayMemberFlag来查看设备是否是网关,只有gatway服务器才会拥有1或为true的标志。 –

+0

http://sldn.softlayer.com/reference/datatypes/SoftLayer_Hardware_Server那里你可以看到国旗 –

相关问题