Skip to content

Commit

Permalink
subclass kubevirt for OSV
Browse files Browse the repository at this point in the history
  • Loading branch information
nasark committed Aug 28, 2024
1 parent 91d1f04 commit 42365f0
Show file tree
Hide file tree
Showing 22 changed files with 171 additions and 1 deletion.
23 changes: 22 additions & 1 deletion app/models/manageiq/providers/openshift/container_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@
class ManageIQ::Providers::Openshift::ContainerManager < ManageIQ::Providers::Kubernetes::ContainerManager
DEFAULT_EXTERNAL_LOGGING_ROUTE_NAME = "logging-kibana-ops".freeze

has_one :infra_manager,
:foreign_key => :parent_ems_id,
:class_name => "ManageIQ::Providers::Openshift::InfraManager",
:autosave => true,
:inverse_of => :parent_manager,
:dependent => :destroy

include ManageIQ::Providers::Openshift::ContainerManager::Options

supports :catalog
Expand All @@ -21,9 +28,23 @@ def self.event_monitor_class
ManageIQ::Providers::Openshift::ContainerManager::EventCatcher
end

def self.virtualization_options
[
{
:label => _('Disabled'),
:value => 'none',
},
{
:label => _('OpenShift Virtualization'),
:value => 'kubevirt',
:pivot => 'endpoints.kubevirt.hostname',
},
]
end

def self.raw_connect(hostname, port, options)
options[:service] ||= "openshift"
send("#{options[:service]}_connect", hostname, port, options)
send(:"#{options[:service]}_connect", hostname, port, options)
end

def self.openshift_connect(hostname, port, options)
Expand Down
34 changes: 34 additions & 0 deletions app/models/manageiq/providers/openshift/infra_manager.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
ManageIQ::Providers::Kubevirt::InfraManager.include(ActsAsStiLeafClass)

class ManageIQ::Providers::Openshift::InfraManager < ManageIQ::Providers::Kubevirt::InfraManager
belongs_to :parent_manager,
:foreign_key => :parent_ems_id,
:inverse_of => :infra_manager,
:class_name => "ManageIQ::Providers::Openshift::ContainerManager"

#
# This is the list of features that this provider supports:
#
supports :catalog
supports :provisioning

def self.ems_type
@ems_type ||= "openshift_infra".freeze
end

def self.description
@description ||= "OpenShift Virtualization".freeze
end

def self.catalog_types
{"openshift" => N_("OpenShift Virtualization")}
end

def default_authentication_type
:openshift
end

def self.display_name(number = 1)
n_('Infrastructure Provider (OpenShift Virtualization)', 'Infrastructure Providers (OpenShift Virtualization)', number)
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ManageIQ::Providers::Kubevirt::InfraManager::Cluster.include(ActsAsStiLeafClass)

class ManageIQ::Providers::Openshift::InfraManager::Cluster < ManageIQ::Providers::Kubevirt::InfraManager::Cluster
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ManageIQ::Providers::Kubevirt::InfraManager::Connection.include(ActsAsStiLeafClass)

class ManageIQ::Providers::Openshift::InfraManager::Connection < ManageIQ::Providers::Kubevirt::InfraManager::Connection
end
4 changes: 4 additions & 0 deletions app/models/manageiq/providers/openshift/infra_manager/host.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ManageIQ::Providers::Kubevirt::InfraManager::Host.include(ActsAsStiLeafClass)

class ManageIQ::Providers::Openshift::InfraManager::Host < ManageIQ::Providers::Kubevirt::InfraManager::Host
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ManageIQ::Providers::Kubevirt::InfraManager::Provision.include(ActsAsStiLeafClass)

class ManageIQ::Providers::Openshift::InfraManager::Provision < ManageIQ::Providers::Kubevirt::InfraManager::Provision
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class ManageIQ::Providers::Openshift::InfraManager::ProvisionWorkflow < ManageIQ::Providers::Kubevirt::InfraManager::ProvisionWorkflow
def self.provider_model
ManageIQ::Providers::Openshift::InfraManager
end

def dialog_name_from_automate(message = 'get_dialog_name')
super(message, {'platform' => 'openshift'})
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ManageIQ::Providers::Openshift::InfraManager::RefreshWorker < ManageIQ::Providers::BaseManager::RefreshWorker
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
require 'concurrent/atomic/atomic_boolean'

class ManageIQ::Providers::Openshift::InfraManager::RefreshWorker::Runner < ManageIQ::Providers::Kubevirt::InfraManager::RefreshWorker::Runner
private

def provider_class
ManageIQ::Providers::Openshift
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ManageIQ::Providers::Openshift::InfraManager::Refresher < ManageIQ::Providers::Kubevirt::InfraManager::Refresher
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ManageIQ::Providers::Kubevirt::InfraManager::Storage.include(ActsAsStiLeafClass)

class ManageIQ::Providers::Openshift::InfraManager::Storage < ManageIQ::Providers::Kubevirt::InfraManager::Storage
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ManageIQ::Providers::Kubevirt::InfraManager::Template.include(ActsAsStiLeafClass)

class ManageIQ::Providers::Openshift::InfraManager::Template < ManageIQ::Providers::Kubevirt::InfraManager::Template
def self.display_name(number = 1)
n_('Template (OpenShift Virtualization)', 'Templates (OpenShift Virtualization)', number)
end
end
7 changes: 7 additions & 0 deletions app/models/manageiq/providers/openshift/infra_manager/vm.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ManageIQ::Providers::Kubevirt::InfraManager::Vm.include(ActsAsStiLeafClass)

class ManageIQ::Providers::Openshift::InfraManager::Vm < ManageIQ::Providers::Kubevirt::InfraManager::Vm
def self.display_name(number = 1)
n_('Virtual Machine (OpenShift Virtualization)', 'Virtual Machines (OpenShift Virtualization)', number)
end
end
45 changes: 45 additions & 0 deletions app/models/manageiq/providers/openshift/inventory.rb
Original file line number Diff line number Diff line change
@@ -1,2 +1,47 @@
class ManageIQ::Providers::Openshift::Inventory < ManageIQ::Providers::Kubernetes::Inventory
# def self.persister_class_for(_ems, _target)
# ManageIQ::Providers::Openshift::Inventory::Persister
# end

# def self.collector_class_for(_ems, _target)
# ManageIQ::Providers::Openshift::Inventory::Collector
# end

def self.parser_class_for(ems, target)
if !ems.kind_of?(EmsInfra)
super
else
parser_type = if target_is_vm?(target)
"PartialTargetRefresh"
else
"FullRefresh"
end
"ManageIQ::Providers::Openshift::Inventory::Parser::InfraManager::#{parser_type}".safe_constantize
end
end

def self.build(ems, target)
if !ems.kind_of?(EmsInfra)
super
else
collector_class = collector_class_for(ems, target)

collector = if target_is_vm?(target)
collector_class.new(ems, target)
else
collector_class.new(ems, ems)
end

persister = persister_class_for(ems, target).new(ems, target)
new(
persister,
collector,
parser_classes_for(ems, target).map(&:new)
)
end
end

def self.target_is_vm?(target)
target.kind_of?(ManageIQ::Providers::Openshift::InfraManager::Vm)
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ManageIQ::Providers::Openshift::Inventory::Collector::InfraManager < ManageIQ::Providers::Kubevirt::Inventory::Collector
end
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ class ManageIQ::Providers::Openshift::Inventory::Parser::ContainerManager::Watch
include ManageIQ::Providers::Openshift::Inventory::Parser::OpenshiftParserMixin

def parse
byebug
super

projects
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ManageIQ::Providers::Openshift::Inventory::Parser::InfraManager < ManageIQ::Providers::Kubevirt::Inventory::Parser
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ManageIQ::Providers::Openshift::Inventory::Parser::InfraManager::FullRefresh < ManageIQ::Providers::Kubevirt::Inventory::Parser::FullRefresh
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ManageIQ::Providers::Openshift::Inventory::Parser::InfraManager::PartialRefresh < ManageIQ::Providers::Kubevirt::Inventory::Parser::PartialRefresh
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ManageIQ::Providers::Openshift::Inventory::Parser::InfraManager::PartialTargetRefresh < ManageIQ::Providers::Kubevirt::Inventory::Parser::PartialTargetRefresh
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class ManageIQ::Providers::Openshift::Inventory::Persister::InfraManager < ManageIQ::Providers::Kubevirt::Inventory::Persister
end
1 change: 1 addition & 0 deletions config/settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,4 @@
:ems_metrics_collector_worker_openshift: {}
:ems_refresh_worker:
:ems_refresh_worker_openshift: {}
:ems_refresh_worker_openshift_infra: {}

0 comments on commit 42365f0

Please sign in to comment.