Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

collect media repositories as ISO storages #128

Merged
merged 7 commits into from Dec 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -17,13 +17,16 @@ class ManageIQ::Providers::IbmPowerHmc::InfraManager < ManageIQ::Providers::Infr
require_nested :ResourcePool
require_nested :MemoryResourcePool
require_nested :ProcessorResourcePool
require_nested :MediaRepository

supports :create
supports :metrics
supports :native_console
supports :provisioning

has_many :hosts_advanced_settings, :through => :hosts, :source => :advanced_settings
has_many :media_repositories, :foreign_key => :ems_id, :dependent => :destroy, :inverse_of => :ext_management_system
has_many :iso_images, :through => :media_repositories

def self.params_for_create
{
Expand Down
@@ -0,0 +1,7 @@
class ManageIQ::Providers::IbmPowerHmc::InfraManager::MediaRepository < ManageIQ::Providers::IbmPowerHmc::InfraManager::Storage
supports :iso_datastore

def self.display_name(number = 1)
n_("Media Repository", "Media Repositories", number)
end
end
Expand Up @@ -68,7 +68,7 @@ def parse_cecs_unavailable

def self.storage_capacity(storage)
case storage
when IbmPowerHmc::VirtualOpticalMedia
when IbmPowerHmc::VirtualMediaRepository, IbmPowerHmc::VirtualOpticalMedia
storage.size.to_f.gigabytes.to_i
when IbmPowerHmc::SharedStoragePool, IbmPowerHmc::LogicalUnit, IbmPowerHmc::VirtualDisk
storage.capacity.to_f.gigabytes.to_i
Expand All @@ -93,6 +93,7 @@ def self.storage_type(storage)
def parse_ssps
collector.ssps.each do |ssp|
persister.storages.build(
:store_type => "SSP",
:name => ssp.name,
:total_space => self.class.storage_capacity(ssp),
:ems_ref => ssp.cluster_uuid,
Expand Down Expand Up @@ -236,6 +237,7 @@ def parse_vioses
parse_vios_disks(vios, hardware)
parse_vios_networks(vios, hardware)
parse_vios_guest_devices(vios, hardware)
parse_vios_media_repository(vios)
end
end

Expand Down Expand Up @@ -322,6 +324,25 @@ def parse_vios_networks(vios, hardware)
end
end

def parse_vios_media_repository(vios)
return if vios.rep.nil?

storage = persister.storages.build(
:ems_ref => vios.uuid,
:type => ManageIQ::Providers::IbmPowerHmc::InfraManager::MediaRepository.name,
:store_type => "ISO",
:name => vios.rep.name,
:total_space => self.class.storage_capacity(vios.rep)
)
# Populate with ISO images.
vios.rep.vopts.each do |vopt|
persister.iso_images.build(
:storage => storage,
:name => vopt.name
)
end
end

def parse_vswitches(host, sys)
if collector.vswitches.key?(sys.uuid)
collector.vswitches[sys.uuid].each do |vswitch|
Expand Down
Expand Up @@ -34,5 +34,6 @@ def initialize_inventory_collections
add_collection(infra, :vm_resource_pools)
add_collection(infra, :parent_blue_folders)
add_collection(infra, :vm_and_template_labels)
add_collection(infra, :iso_images)
end
end
Expand Up @@ -224,6 +224,15 @@ def assert_specific_vios

# VMs with dedicated CPUs have no shared processor pool.
expect(vios.parent_resource_pool).to be_nil

repo = ems.media_repositories.find_by(:ems_ref => vios_uuid)
expect(repo).to have_attributes(
:store_type => "ISO",
:name => "VMLibrary",
:total_space => 45.gigabytes
)
iso = repo.iso_images.find_by(:name => "rhel84")
expect(iso).not_to be nil
end

def assert_specific_lpar
Expand Down Expand Up @@ -342,9 +351,10 @@ def assert_specific_resource_pool_mem
def assert_specific_storage
storage = ems.storages.find_by(:ems_ref => storage_uuid)
expect(storage).to have_attributes(
:ems_ref => storage_uuid,
:name => "SSP_1",
:type => "ManageIQ::Providers::IbmPowerHmc::InfraManager::Storage"
:ems_ref => storage_uuid,
:store_type => "SSP",
:name => "SSP_1",
:type => "ManageIQ::Providers::IbmPowerHmc::InfraManager::Storage"
)
end
end