Softlayer - 如何通过镜像名称查找硬件服务器的镜像参考代码
Softlayer - How to find the hardware server's image reference code by its image name
如何通过镜像名称找到硬件服务器的镜像参考码?
我尝试搜索图像 Vyatta Subscription Edition for Bare metal 6.7.9
和 VMware VSphere 6.5.0u1
here 但没有找到图像。使用 ruby gem 通过以下代码
找出图像
SoftLayer::ImageTemplate.find_public_templates(:name => name, client: client).first
但是找不到它。
我在我的帐户上进行了搜索,但没有看到 SoftLayer 提供的名称为 Vyatta Subscription Edition for Bare metal 6.7.9
或 VMware VSphere 6.5.0u1
.
的任何 public 图像模板
图像模板只能从虚拟客人创建,因此如果您创建并制作它们 public 那么它们应该列在这里 https://control.softlayer.com/devices/images, the portal page makes api calls to retrieve that list, the getPublicImages retrieves the public images and getPrivateBlockDeviceTemplateGroups 私人的
我可以建议你使用对象过滤器来搜索名称以 "Vyatta" 开头的图像,过滤器是这样的:
filter = SoftLayer::ObjectFilter.new do |img_filter|
img_filter.accept('name').when_it begins_with('Vyatta')
end
那么您的代码应该如下所示:
SoftLayer::ImageTemplate.find_public_templates(:object_filter => filter)
使用 object_filter 检索数据时 find_public_templates
似乎需要很长时间,所以我也可以向您推荐我自己的脚本,我觉得它检索数据的速度稍快一些:
require 'rubygems'
require 'softlayer_api'
require 'pp'
username = 'set me'
api_key = 'set me'
image_service = SoftLayer::Service.new('SoftLayer_Virtual_Guest_Block_Device_Template_Group',
username: username, api_key: api_key)
filter = SoftLayer::ObjectFilter.new do |img_filter|
img_filter.accept('name').when_it begins_with('Vyatta')
end
# Another way to set filters:
# filter = SoftLayer::ObjectFilter.new
# filter.set_criteria_for_key_path("name", "operation"=>"^= Vyatta")
begin
images = image_service.object_filter(filter).getPublicImages
pp images
rescue StandardError => e
puts "Error when executing the script... #{e}"
end
如何通过镜像名称找到硬件服务器的镜像参考码?
我尝试搜索图像 Vyatta Subscription Edition for Bare metal 6.7.9
和 VMware VSphere 6.5.0u1
here 但没有找到图像。使用 ruby gem 通过以下代码
SoftLayer::ImageTemplate.find_public_templates(:name => name, client: client).first
但是找不到它。
我在我的帐户上进行了搜索,但没有看到 SoftLayer 提供的名称为 Vyatta Subscription Edition for Bare metal 6.7.9
或 VMware VSphere 6.5.0u1
.
图像模板只能从虚拟客人创建,因此如果您创建并制作它们 public 那么它们应该列在这里 https://control.softlayer.com/devices/images, the portal page makes api calls to retrieve that list, the getPublicImages retrieves the public images and getPrivateBlockDeviceTemplateGroups 私人的
我可以建议你使用对象过滤器来搜索名称以 "Vyatta" 开头的图像,过滤器是这样的:
filter = SoftLayer::ObjectFilter.new do |img_filter|
img_filter.accept('name').when_it begins_with('Vyatta')
end
那么您的代码应该如下所示:
SoftLayer::ImageTemplate.find_public_templates(:object_filter => filter)
使用 object_filter 检索数据时 find_public_templates
似乎需要很长时间,所以我也可以向您推荐我自己的脚本,我觉得它检索数据的速度稍快一些:
require 'rubygems'
require 'softlayer_api'
require 'pp'
username = 'set me'
api_key = 'set me'
image_service = SoftLayer::Service.new('SoftLayer_Virtual_Guest_Block_Device_Template_Group',
username: username, api_key: api_key)
filter = SoftLayer::ObjectFilter.new do |img_filter|
img_filter.accept('name').when_it begins_with('Vyatta')
end
# Another way to set filters:
# filter = SoftLayer::ObjectFilter.new
# filter.set_criteria_for_key_path("name", "operation"=>"^= Vyatta")
begin
images = image_service.object_filter(filter).getPublicImages
pp images
rescue StandardError => e
puts "Error when executing the script... #{e}"
end