foreman_ovirt 0.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/{LICENSE.txt → LICENSE} +0 -2
- data/README.md +140 -0
- data/Rakefile +37 -43
- data/app/assets/javascripts/foreman_ovirt/display.js +10 -0
- data/app/assets/javascripts/foreman_ovirt/host_edit.js +61 -0
- data/app/assets/javascripts/foreman_ovirt/nic_info.js +3 -0
- data/app/assets/javascripts/foreman_ovirt/ovirt.js +261 -0
- data/app/controllers/concerns/foreman_ovirt/compute_resources_vms_controller.rb +29 -0
- data/app/controllers/concerns/foreman_ovirt/parameters_extension.rb +35 -0
- data/app/controllers/foreman_ovirt/concerns/compute_resources_controller_extensions.rb +60 -0
- data/app/helpers/ovirt_compute_resource_helper.rb +26 -0
- data/app/models/concerns/fog_extensions/ovirt/server.rb +42 -0
- data/app/models/concerns/fog_extensions/ovirt/template.rb +14 -0
- data/app/models/concerns/fog_extensions/ovirt/volume.rb +11 -0
- data/app/models/foreman_ovirt/ovirt.rb +752 -0
- data/app/views/api/v2/compute_resources/ovirt.json.rabl +1 -0
- data/app/views/compute_resources/form/_ovirt.html.erb +14 -0
- data/app/views/compute_resources/show/_ovirt.html.erb +16 -0
- data/app/views/compute_resources_vms/form/ovirt/_base.html.erb +83 -0
- data/app/views/compute_resources_vms/form/ovirt/_network.html.erb +32 -0
- data/app/views/compute_resources_vms/form/ovirt/_volume.html.erb +16 -0
- data/app/views/compute_resources_vms/index/_ovirt.html.erb +12 -0
- data/app/views/compute_resources_vms/index/_ovirt_json.erb +6 -0
- data/app/views/compute_resources_vms/show/_ovirt.html.erb +55 -0
- data/app/views/images/form/_ovirt.html.erb +4 -0
- data/config/routes.rb +8 -13
- data/db/migrate/20250810212811_update_legacy_ovirt_compute_resource_type.rb +21 -0
- data/lib/foreman_ovirt/engine.rb +70 -0
- data/lib/foreman_ovirt/version.rb +3 -0
- data/lib/foreman_ovirt.rb +2 -1
- data/lib/tasks/foreman_ovirt_tasks.rake +30 -0
- data/locale/Makefile +73 -0
- data/locale/en/foreman_ovirt.po +19 -0
- data/locale/foreman_ovirt.pot +19 -0
- data/locale/gemspec.rb +2 -0
- data/package.json +39 -0
- data/test/factories/foreman_ovirt_factories.rb +5 -0
- data/test/test_plugin_helper.rb +6 -0
- data/test/unit/foreman_ovirt_test.rb +11 -0
- data/webpack/components/extensions/HostDetails/DetailsTabCards/OvirtCard.js +132 -0
- data/webpack/components/ovirt.js +20 -0
- data/webpack/global_index.js +14 -0
- data/webpack/global_test_setup.js +11 -0
- data/webpack/index.js +1 -0
- data/webpack/test_setup.js +17 -0
- metadata +157 -128
- data/.document +0 -5
- data/Gemfile +0 -14
- data/Gemfile.lock +0 -33
- data/README.rdoc +0 -20
- data/VERSION +0 -1
- data/app/controllers/foreman_ovirt/auth_source_ovirts_controller.rb +0 -57
- data/app/controllers/foreman_ovirt/dashboard_controller.rb +0 -10
- data/app/controllers/foreman_ovirt/hosts_controller.rb +0 -17
- data/app/models/foreman_ovirt/auth_source_ovirt.rb +0 -78
- data/app/models/foreman_ovirt/user_extensions.rb +0 -26
- data/app/views/foreman_ovirt/auth_source_ovirts/_form.html.erb +0 -17
- data/app/views/foreman_ovirt/auth_source_ovirts/edit.html.erb +0 -3
- data/app/views/foreman_ovirt/auth_source_ovirts/index.html.erb +0 -22
- data/app/views/foreman_ovirt/auth_source_ovirts/new.html.erb +0 -3
- data/app/views/foreman_ovirt/auth_source_ovirts/welcome.html.erb +0 -8
- data/app/views/foreman_ovirt/hosts/_overview.html.erb +0 -27
- data/app/views/foreman_ovirt/hosts/show.html.erb +0 -48
- data/app/views/foreman_ovirt/hosts/show_graphs.html.erb +0 -13
- data/app/views/layouts/application_ovirt.html.erb +0 -36
- data/config/initializers/ovirt_setup.rb +0 -30
- data/foreman_ovirt.gemspec +0 -74
- data/lib/engine.rb +0 -9
@@ -0,0 +1,60 @@
|
|
1
|
+
module ForemanOvirt
|
2
|
+
module Concerns
|
3
|
+
module ComputeResourcesControllerExtensions
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
prepended do
|
7
|
+
before_action :change_datacenter_to_uuid, only: [:create, :update]
|
8
|
+
rescue_from ::ProxyAPI::Ovirt::Unauthorized, with: :render_ovirt_unauthorized_error
|
9
|
+
end
|
10
|
+
|
11
|
+
def available_clusters
|
12
|
+
organization = find_organization_by_id_or_name(params[:organization_id], params[:organization_name])
|
13
|
+
location = find_location_by_id_or_name(params[:location_id], params[:location_name])
|
14
|
+
proxy = find_resource(params[:id], [organization, location].compact, ::ProxyAPI::Ovirt)
|
15
|
+
render json: proxy.clusters
|
16
|
+
rescue Foreman::Exception => e
|
17
|
+
render_error e.message, status: :not_found
|
18
|
+
end
|
19
|
+
|
20
|
+
def available_vnic_profiles
|
21
|
+
organization = find_organization_by_id_or_name(params[:organization_id], params[:organization_name])
|
22
|
+
location = find_location_by_id_or_name(params[:location_id], params[:location_name])
|
23
|
+
proxy = find_resource(params[:id], [organization, location].compact, ::ProxyAPI::Ovirt)
|
24
|
+
render json: proxy.vnic_profiles(params[:network_id])
|
25
|
+
rescue Foreman::Exception => e
|
26
|
+
render_error e.message, status: :not_found
|
27
|
+
end
|
28
|
+
|
29
|
+
def action_permission
|
30
|
+
case params[:action]
|
31
|
+
when 'available_clusters', 'available_vnic_profiles'
|
32
|
+
:view
|
33
|
+
else
|
34
|
+
super
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def change_datacenter_to_uuid
|
41
|
+
return unless params[:compute_resource] && params[:compute_resource][:provider] == 'Ovirt' && params[:compute_resource][:datacenter]
|
42
|
+
proxy = find_resource(params[:id]) if params[:id].present?
|
43
|
+
proxy ||= ::ProxyAPI::Ovirt.new(
|
44
|
+
url: params[:compute_resource][:url],
|
45
|
+
user: params[:compute_resource][:user],
|
46
|
+
password: params[:compute_resource][:password]
|
47
|
+
)
|
48
|
+
uuid = proxy.datacenter_uuid_by_name(params[:compute_resource][:datacenter])
|
49
|
+
params[:compute_resource][:datacenter] = uuid
|
50
|
+
rescue ::ProxyAPI::Ovirt::Unauthorized
|
51
|
+
rescue Foreman::Exception => e
|
52
|
+
render_error e.message, status: :not_found
|
53
|
+
end
|
54
|
+
|
55
|
+
def render_ovirt_unauthorized_error
|
56
|
+
render_error "401 Unauthorized", status: :unauthorized
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module OvirtComputeResourceHelper
|
2
|
+
# Really counting vms is as expensive as loading them all, especially when
|
3
|
+
# a filter is in place. So we create a fake count to get table pagination to work.
|
4
|
+
def ovirt_fake_vms_count
|
5
|
+
params['start'].to_i + 1 + [@vms.length, params['length'].to_i].min
|
6
|
+
end
|
7
|
+
|
8
|
+
def ovirt_storage_domains_for_select(compute_resource)
|
9
|
+
compute_resource.storage_domains.map { |sd| OpenStruct.new({ id: sd.id, label: "#{sd.name} (" + _("Available") + ": #{sd.available.to_i / 1.gigabyte} GiB, " + _("Used") + ": #{sd.used.to_i / 1.gigabyte} GiB)" }) }
|
10
|
+
end
|
11
|
+
|
12
|
+
def ovirt_vms_data
|
13
|
+
data = @vms.map do |vm|
|
14
|
+
[
|
15
|
+
link_to_if_authorized(html_escape(vm.name), hash_for_compute_resource_vm_path(:compute_resource_id => @compute_resource, :id => vm.id).merge(:auth_object => @compute_resource, :auth_action => 'view', :authorizer => authorizer)),
|
16
|
+
vm.cores,
|
17
|
+
number_to_human_size(vm.memory),
|
18
|
+
"<span #{vm_power_class(vm.ready?)}>#{vm_state(vm)}</span>",
|
19
|
+
action_buttons(vm_power_action(vm, authorizer),
|
20
|
+
vm_import_action(vm), vm_associate_link(vm),
|
21
|
+
display_delete_if_authorized(hash_for_compute_resource_vm_path(:compute_resource_id => @compute_resource, :id => vm.id).merge(:auth_object => @compute_resource, :authorizer => authorizer))),
|
22
|
+
]
|
23
|
+
end
|
24
|
+
JSON.fast_generate(data).html_safe
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module FogExtensions
|
2
|
+
module Ovirt
|
3
|
+
module Server
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
include ActionView::Helpers::NumberHelper
|
7
|
+
|
8
|
+
attr_accessor :image_id
|
9
|
+
|
10
|
+
def to_s
|
11
|
+
name
|
12
|
+
end
|
13
|
+
|
14
|
+
def state
|
15
|
+
status
|
16
|
+
end
|
17
|
+
|
18
|
+
def interfaces_attributes=(attrs)
|
19
|
+
end
|
20
|
+
|
21
|
+
def volumes_attributes=(attrs)
|
22
|
+
end
|
23
|
+
|
24
|
+
def poweroff
|
25
|
+
service.vm_action(:id => id, :action => :shutdown)
|
26
|
+
end
|
27
|
+
|
28
|
+
def reset
|
29
|
+
reboot
|
30
|
+
end
|
31
|
+
|
32
|
+
def vm_description
|
33
|
+
_("%{cores} Cores and %{memory} memory") % {:cores => cores, :memory => number_to_human_size(memory.to_i)}
|
34
|
+
end
|
35
|
+
|
36
|
+
def select_nic(fog_nics, nic)
|
37
|
+
nic_network = @service.list_networks(@attributes[:cluster]).detect { |n| n.name == nic.compute_attributes['network'] }.try(:id) || nic.compute_attributes['network']
|
38
|
+
fog_nics.detect { |fn| fn.network == nic_network } # grab any nic on the same network
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module FogExtensions
|
2
|
+
module Ovirt
|
3
|
+
module Template
|
4
|
+
def full_name
|
5
|
+
version = full_version.present? ? " (#{full_version})" : ""
|
6
|
+
"#{name}#{version}"
|
7
|
+
end
|
8
|
+
|
9
|
+
def full_version
|
10
|
+
version.version_name.presence || version.version_number
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|