foreman_hyperv 0.0.4 → 0.1.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 +4 -4
- data/LICENSE.txt +1451 -12
- data/README.md +2 -0
- data/app/assets/javascripts/foreman_hyperv/compute_resource_base.js +78 -0
- data/app/helpers/foreman_hyperv/compute_resources_vms_helper.rb +19 -0
- data/app/models/concerns/fog_extensions/hyperv/compute.rb +6 -0
- data/app/models/concerns/fog_extensions/hyperv/hard_drive.rb +37 -0
- data/app/models/concerns/fog_extensions/hyperv/network_adapter.rb +111 -16
- data/app/models/concerns/fog_extensions/hyperv/server.rb +87 -38
- data/app/models/concerns/foreman_hyperv/host_managed_extensions.rb +66 -0
- data/app/models/foreman_hyperv/hyperv.rb +365 -143
- data/app/views/compute_resources/form/_hyperv.html.erb +6 -2
- data/app/views/compute_resources_vms/form/hyperv/_base.html.erb +36 -25
- data/app/views/compute_resources_vms/form/hyperv/_network.html.erb +34 -11
- data/app/views/compute_resources_vms/form/hyperv/_volume.html.erb +5 -2
- data/app/views/compute_resources_vms/index/_hyperv.html.erb +2 -2
- data/app/views/compute_resources_vms/show/_hyperv.html.erb +27 -9
- data/lib/foreman_hyperv/engine.rb +38 -17
- data/lib/foreman_hyperv/version.rb +3 -1
- data/lib/foreman_hyperv.rb +2 -0
- data/lib/tasks/foreman_hyperv_tasks.rake +33 -0
- metadata +25 -37
- data/.gitignore +0 -9
- data/.rubocop.yml +0 -22
- data/.rubocop_todo.yml +0 -20
- data/.travis.yml +0 -5
- data/CHANGELOG.md +0 -25
- data/Gemfile +0 -6
- data/app/assets/javascripts/compute_resources/hyperv/base.js +0 -32
- data/app/models/concerns/fog_extensions/hyperv/vhd.rb +0 -12
- data/foreman_hyperv.gemspec +0 -27
- data/test/foreman_hyperv_test.rb +0 -11
- data/test/test_helper.rb +0 -4
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
<%=
|
|
2
|
-
|
|
1
|
+
<%= javascript_include_tag("foreman_hyperv/compute_resource_base.js") %>
|
|
3
2
|
<%
|
|
4
3
|
cluster_errors = []
|
|
5
4
|
begin
|
|
6
5
|
clusters = compute_resource.clusters.map(&:name)
|
|
7
6
|
f.object.cluster_name = clusters.first if clusters.count == 1
|
|
8
|
-
computers = (compute_resource.
|
|
7
|
+
computers = (compute_resource.cluster(f.object.cluster_name) || compute_resource).hosts
|
|
8
|
+
f.object.computer_name ||= computers.first.name
|
|
9
9
|
rescue Fog::Hyperv::Errors::PSError => ex
|
|
10
10
|
# In case of errors
|
|
11
11
|
clusters = []
|
|
@@ -13,13 +13,35 @@
|
|
|
13
13
|
|
|
14
14
|
cluster_errors << ex
|
|
15
15
|
end
|
|
16
|
-
|
|
17
|
-
<% if clusters.any?
|
|
18
|
-
<%= select_f f, :cluster_name, clusters, :to_s, :to_s, { include_blank: true }, label: _('Cluster') %>
|
|
19
|
-
<% if computers.count > 1
|
|
20
|
-
<%= select_f f, :computer_name, computers, :
|
|
16
|
+
-%>
|
|
17
|
+
<% if clusters.any? %>
|
|
18
|
+
<%= select_f f, :cluster_name, clusters, :to_s, :to_s, { include_blank: true }, label: _('Cluster'), disabled: !new_host %>
|
|
19
|
+
<% if computers.count > 1 %>
|
|
20
|
+
<%= select_f f, :computer_name, computers, :name, :name, {}, label: _('Computer Name'), disabled: !new_host, onload: 'hypervHostChange(this);', onchange: 'hypervHostChange(this);' %>
|
|
21
21
|
<% end -%>
|
|
22
22
|
<% end %>
|
|
23
|
+
<div class="clearfix">
|
|
24
|
+
<div class="form-group">
|
|
25
|
+
<label class="col-md-2 control-label">Available resources</label>
|
|
26
|
+
<div class="col-md-4 help-block" id="hypervComputerInformation">
|
|
27
|
+
<% computers.each do |host| -%>
|
|
28
|
+
<table class="hyperv-host-info" style="<%= (host.name == f.object.computer_name) ? '' : 'display: none' %>" data-host="<%= host.name %>">
|
|
29
|
+
<tbody>
|
|
30
|
+
<tr>
|
|
31
|
+
<td>CPU:</td>
|
|
32
|
+
<td style="padding-left:0.5em;"><%= host.logical_processor_count %></td>
|
|
33
|
+
</tr>
|
|
34
|
+
<tr>
|
|
35
|
+
<td>Memory:</td>
|
|
36
|
+
<td style="padding-left:0.5em;"><%= number_to_human_size(host.memory_capacity) %></td>
|
|
37
|
+
</tr>
|
|
38
|
+
</tbody>
|
|
39
|
+
</table>
|
|
40
|
+
<% end -%>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
23
45
|
<% cluster_errors.each do |err| -%>
|
|
24
46
|
<div class="alert alert-warning alert-dismissable">
|
|
25
47
|
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
|
|
@@ -27,30 +49,19 @@
|
|
|
27
49
|
</div>
|
|
28
50
|
<% end -%>
|
|
29
51
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
%>
|
|
33
|
-
|
|
34
|
-
<% if new_host || f.object.generation == 2 %>
|
|
35
|
-
<%= checkbox_f f, :secure_boot_enabled, { label: _('Use Secure Boot'), disabled: f.object.generation == 1 }, 'true', 'false' %>
|
|
36
|
-
<% end %>
|
|
52
|
+
<%= select_f f, :generation, hyperv_generations, :first, :last, {}, label: 'Firmware', disabled: !new_host, onchange: 'hypervGenerationChange(this);' %>
|
|
53
|
+
<% if new_host || f.object.generation == :UEFI -%>
|
|
54
|
+
<%= checkbox_f f, :secure_boot_enabled, { label: _('Enable Secure Boot'), disabled: f.object.generation == :BIOS }, 'true', 'false' %>
|
|
55
|
+
<% end -%>
|
|
37
56
|
|
|
38
57
|
<%= counter_f f, :processor_count, label: _('CPUs'), label_size: 'col-md-2' %>
|
|
39
|
-
<%= byte_size_f f, :memory_startup,
|
|
58
|
+
<%= byte_size_f f, :memory_startup, label: _('Memory (Startup)'), label_size: 'col-md-2' %>
|
|
40
59
|
|
|
60
|
+
<%= checkbox_f f, :dynamic_memory_enabled, { label: _('Use Dynamic Memory'), onchange: 'hypervDynamicMemoryChange(this);' }, 'true', 'false' %>
|
|
41
61
|
<%= byte_size_f f, :memory_maximum, class: 'col-md-2', label: _('Memory Maximum'), disabled: !f.object.dynamic_memory_enabled %>
|
|
42
62
|
<%= byte_size_f f, :memory_minimum, class: 'col-md-2', label: _('Memory Minimum'), disabled: !f.object.dynamic_memory_enabled %>
|
|
43
|
-
<%= checkbox_f f, :dynamic_memory_enabled, { label: _('Use Dynamic Memory'), onchange: 'hypervDynamicMemoryChange(this);' }, 'true', 'false' %>
|
|
44
63
|
|
|
45
|
-
<% if new_host %>
|
|
46
|
-
<% if compute_resource.servers.new().respond_to? :set_vlan -%>
|
|
47
|
-
<%= text_f f, :vlan, label: _('VLAN'), label_size: 'col-md-2' %>
|
|
48
|
-
<% end -%>
|
|
49
64
|
<% checked = params[:host] && params[:host][:compute_attributes] && params[:host][:compute_attributes][:start] || '1' %>
|
|
50
65
|
<%= checkbox_f f, :start, { checked: (checked == '1'), help_inline: _("Power ON this machine"), label: _('Start'), label_size: "col-md-2"} if new_host && controller_name != "compute_attributes" %>
|
|
51
|
-
<% end %>
|
|
52
66
|
|
|
53
67
|
<%= textarea_f f, :notes, rows: '3', label: _('Notes') %>
|
|
54
|
-
<%= f.hidden_field :id %>
|
|
55
|
-
|
|
56
|
-
<%= compute_specific_js(compute_resource, 'base') %>
|
|
@@ -1,11 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<%=
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<%= f.
|
|
1
|
+
<%= f.hidden_field :identity %>
|
|
2
|
+
|
|
3
|
+
<%= select_f f, :switch_id, hyperv_networks(compute_resource), :first, :last, { include_blank: true },
|
|
4
|
+
label: _('Network switch'), label_size: 'col-md-3', size: 'col-md-8' %>
|
|
5
|
+
|
|
6
|
+
<%= select_f f, :vlan_operation_mode, hyperv_vlan_modes, :first, :last, {},
|
|
7
|
+
label: _('VLAN mode'), label_size: 'col-md-3', size: 'col-md-8',
|
|
8
|
+
onchange: 'hypervVLANModeChange(this);' %>
|
|
9
|
+
|
|
10
|
+
<%# If Access mode %>
|
|
11
|
+
<div data-hyperv-vlan-mode="access" class="<%= 'hide' unless f.object.vlan_operation_mode.to_s == 'Access' %>">
|
|
12
|
+
<%= number_f f, :access_vlan_id, label: _('Access VLAN'), label_size: 'col-md-3', size: 'col-md-8', required: true, disabled: (f.object.vlan_operation_mode.to_s != 'Access') %>
|
|
13
|
+
</div>
|
|
14
|
+
<%# If Trunk mode %>
|
|
15
|
+
<div data-hyperv-vlan-mode="trunk" class="<%= 'hide' unless f.object.vlan_operation_mode.to_s == 'Trunk' %>">
|
|
16
|
+
<%= number_f f, :native_vlan_id, label: _('Native VLAN'), label_size: 'col-md-3', size: 'col-md-8', required: true, disabled: (f.object.vlan_operation_mode.to_s != 'Trunk') %>
|
|
17
|
+
<%= text_f f, :allowed_vlan_ids, placeholder: '10,20-40,50', label: _('Allowed VLANs'), label_size: 'col-md-3', size: 'col-md-8', required: true, disabled: (f.object.vlan_operation_mode.to_s != 'Trunk') %>
|
|
18
|
+
</div>
|
|
19
|
+
<%# If Private mode %>
|
|
20
|
+
<div data-hyperv-vlan-mode="private" class="<%= 'hide' unless f.object.vlan_operation_mode.to_s == 'Private' %>">
|
|
21
|
+
<%= select_f f, :vlan_private_mode, hyperv_private_vlan_modes, :first, :last, {},
|
|
22
|
+
label: _('VLAN private mode'), label_size: 'col-md-3', size: 'col-md-8',
|
|
23
|
+
onchange: 'hypervVLANPrivateModeChange(this);',
|
|
24
|
+
disabled: (f.object.vlan_operation_mode.to_s != 'Private') %>
|
|
25
|
+
<%= number_f f, :primary_vlan_id, label: _('Primary VLAN'), label_size: 'col-md-3', size: 'col-md-8', required: true, disabled: (f.object.vlan_operation_mode.to_s != 'Private') %>
|
|
26
|
+
<%# If Isolated or Community private mode %>
|
|
27
|
+
<div data-hyperv-vlan-private-mode="singular" class="<%= 'hide' if f.object.vlan_private_mode.to_s == 'Promiscuous' %>">
|
|
28
|
+
<%= number_f f, :secondary_vlan_id, label: _('Secondary VLAN'), label_size: 'col-md-3', size: 'col-md-8', required: true, disabled: (f.object.vlan_operation_mode.to_s != 'Private' || f.object.vlan_private_mode.to_s == 'Promiscuous') %>
|
|
29
|
+
</div>
|
|
30
|
+
<%# If Promiscuous private mode %>
|
|
31
|
+
<div data-hyperv-vlan-private-mode="plural" class="<%= 'hide' unless f.object.vlan_private_mode.to_s == 'Promiscuous' %>">
|
|
32
|
+
<%= text_f f, :secondary_vlan_ids, placeholder: '10,20-40,50', label: _('Secondary VLANs'), label_size: 'col-md-3', size: 'col-md-8', required: true, disabled: (f.object.vlan_operation_mode.to_s != 'Private' || f.object.vlan_private_mode.to_s != 'Promiscuous') %>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
<%= javascript_tag("tfm.numFields.initByte()") %>
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
<%= byte_size_f f, :size, label: _('Size'), disabled: !new_host %>
|
|
3
|
+
<% if f.object.persisted? -%>
|
|
5
4
|
<%= f.hidden_field :id %>
|
|
5
|
+
<%= f.hidden_field :basename %>
|
|
6
|
+
<% end -%>
|
|
7
|
+
<%= text_f f, :basename, label: _('Name'), help_inline: _('This is the VHD filename on disk, without extension'), required: true, disabled: f.object.persisted? %>
|
|
8
|
+
<%= byte_size_f f, :size_bytes, label: _('Size') %>
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
<tbody>
|
|
12
12
|
<% @vms.each do |vm| -%>
|
|
13
13
|
<tr>
|
|
14
|
-
<td><%= link_to_if_authorized vm.name, hash_for_compute_resource_vm_path(:
|
|
14
|
+
<td><%= link_to_if_authorized vm.name, hash_for_compute_resource_vm_path(compute_resource_id: @compute_resource, id: vm.identity).merge(auth_object: @compute_resource, auth_action: 'view', authorizer: authorizer) %></td>
|
|
15
15
|
<td><%= vm.processor_count %></td>
|
|
16
16
|
<td><%= number_to_human_size vm.memory_startup %></td>
|
|
17
17
|
<td><%= vm.computer_name %></td>
|
|
18
18
|
<td><span <%= vm_power_class(vm.ready?) %>><%= vm_state(vm) %></span></td>
|
|
19
19
|
<td>
|
|
20
20
|
<%= action_buttons(vm_power_action(vm, authorizer),
|
|
21
|
-
display_delete_if_authorized(hash_for_compute_resource_vm_path(:
|
|
21
|
+
display_delete_if_authorized(hash_for_compute_resource_vm_path(compute_resource_id: @compute_resource, id: vm.identity).merge(auth_object: @compute_resource, authorizer: authorizer))) %>
|
|
22
22
|
</td>
|
|
23
23
|
</tr>
|
|
24
24
|
<% end -%>
|
|
@@ -20,31 +20,49 @@
|
|
|
20
20
|
<tr><th colspan="2"><%=_('Properties') %></th></tr>
|
|
21
21
|
</thead>
|
|
22
22
|
<tbody>
|
|
23
|
-
<%= prop :id %>
|
|
24
|
-
<%#= prop :cluster %>
|
|
25
23
|
<%= prop :name %>
|
|
24
|
+
<%#= prop :cluster %>
|
|
25
|
+
<%= prop :id %>
|
|
26
26
|
<tr>
|
|
27
27
|
<td>Generation</td>
|
|
28
|
-
<td
|
|
28
|
+
<td>Generation <%= @vm.generation_num %> (<%= @vm.generation %>)</td>
|
|
29
29
|
</tr>
|
|
30
|
-
<% if @vm.generation
|
|
30
|
+
<% if @vm.generation == :UEFI %>
|
|
31
31
|
<tr>
|
|
32
32
|
<td>SecureBoot</td>
|
|
33
33
|
<td><%= @vm.firmware.secure_boot %></td>
|
|
34
34
|
</tr>
|
|
35
35
|
<% end %>
|
|
36
|
+
<%= prop :processor_count %>
|
|
37
|
+
<%= memory_prop :memory_startup %>
|
|
36
38
|
<% if @vm.dynamic_memory_enabled %>
|
|
37
39
|
<%= memory_prop :memory_maximum %>
|
|
38
40
|
<%= memory_prop :memory_minimum %>
|
|
39
41
|
<% end %>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
<% @vm.network_adapters.each do |nic| %>
|
|
43
|
+
<tr>
|
|
44
|
+
<td><%= _('NIC') %></td>
|
|
45
|
+
<td><%= nic.name %> - <%= nic.mac %> (<% if nic.connected %><%= nic.switch_name %><% end %>)</td>
|
|
46
|
+
</tr>
|
|
47
|
+
<% end %>
|
|
48
|
+
<% @vm.hard_drives.each do |hdd| %>
|
|
49
|
+
<tr>
|
|
50
|
+
<td><%= _('Disk') %></td>
|
|
51
|
+
<% if hdd.vhd? %>
|
|
52
|
+
<td><%= hdd.name %> - VHD (<%= hdd.vhd.basename %> <%= number_to_human_size(hdd.size_bytes) %>)</td>
|
|
53
|
+
<% else %>
|
|
54
|
+
<td><%= hdd.name %> - Physical (<%= hdd.controller_type %>)</td>
|
|
55
|
+
<% end %>
|
|
56
|
+
</tr>
|
|
57
|
+
<% end %>
|
|
44
58
|
<%= prop :computer_name %>
|
|
45
|
-
<%= prop :status %>
|
|
46
59
|
<%= prop :state %>
|
|
60
|
+
<%= prop :status %>
|
|
47
61
|
<%= prop :notes %>
|
|
62
|
+
<tr>
|
|
63
|
+
<td><%= _('Running on') %></td>
|
|
64
|
+
<td><%= link_to @compute_resource, compute_resource_path(@compute_resource) %></td>
|
|
65
|
+
</tr>
|
|
48
66
|
</tbody>
|
|
49
67
|
</table>
|
|
50
68
|
</div>
|
|
@@ -1,17 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module ForemanHyperv
|
|
2
4
|
class Engine < ::Rails::Engine
|
|
3
5
|
engine_name 'foreman_hyperv'
|
|
6
|
+
#config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
|
|
7
|
+
|
|
8
|
+
initializer 'foreman_hyperv.register_plugin', :before => :finisher_hook do |app|
|
|
9
|
+
app.reloader.to_prepare do
|
|
10
|
+
Foreman::Plugin.register :foreman_hyperv do
|
|
11
|
+
requires_foreman '>= 3.13'
|
|
12
|
+
register_gettext
|
|
13
|
+
|
|
14
|
+
compute_resource ForemanHyperv::Hyperv
|
|
4
15
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
requires_foreman '>= 1.14'
|
|
8
|
-
compute_resource ForemanHyperv::Hyperv
|
|
16
|
+
parameter_filter ComputeResource, :url, :user, :password
|
|
17
|
+
end
|
|
9
18
|
end
|
|
10
19
|
end
|
|
11
20
|
|
|
12
21
|
assets_to_precompile =
|
|
13
22
|
Dir.chdir(root) do
|
|
14
|
-
Dir['app/assets/javascripts/**/*'].map do |f|
|
|
23
|
+
Dir['app/assets/{javascripts,stylesheets}/**/*'].map do |f|
|
|
15
24
|
f.split(File::SEPARATOR, 4).last
|
|
16
25
|
end
|
|
17
26
|
end
|
|
@@ -20,27 +29,39 @@ module ForemanHyperv
|
|
|
20
29
|
app.config.assets.precompile += assets_to_precompile
|
|
21
30
|
end
|
|
22
31
|
|
|
32
|
+
initializer 'foreman_hyperv.filter_parameters' do |app|
|
|
33
|
+
app.config.filter_parameters += []
|
|
34
|
+
end
|
|
35
|
+
|
|
23
36
|
initializer 'foreman_hyperv.configure_assets', group: :assets do
|
|
24
37
|
SETTINGS[:foreman_hyperv] = { assets: { precompile: assets_to_precompile } }
|
|
25
38
|
end
|
|
26
39
|
|
|
40
|
+
initializer 'foreman_hyperv.add_rabl_view_path' do
|
|
41
|
+
Rabl.configure do |config|
|
|
42
|
+
config.view_paths << ForemanHyperv::Engine.root.join('app', 'views')
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
27
46
|
config.to_prepare do
|
|
28
47
|
require 'fog/hyperv'
|
|
29
48
|
|
|
30
|
-
require 'fog/hyperv/models/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
49
|
+
require 'fog/hyperv/compute/models/server'
|
|
50
|
+
Fog::Hyperv::Compute::Server.prepend ::FogExtensions::Hyperv::Server
|
|
51
|
+
|
|
52
|
+
require 'fog/hyperv/compute/models/network_adapter'
|
|
53
|
+
Fog::Hyperv::Compute::NetworkAdapter.prepend ::FogExtensions::Hyperv::NetworkAdapter
|
|
34
54
|
|
|
35
|
-
require 'fog/hyperv/models/
|
|
36
|
-
|
|
37
|
-
'../../../app/models/concerns/fog_extensions/hyperv/network_adapter', __FILE__)
|
|
38
|
-
Fog::Compute::Hyperv::NetworkAdapter.send(:include, FogExtensions::Hyperv::NetworkAdapter)
|
|
55
|
+
require 'fog/hyperv/compute/models/hard_drive'
|
|
56
|
+
Fog::Hyperv::Compute::HardDrive.prepend ::FogExtensions::Hyperv::HardDrive
|
|
39
57
|
|
|
40
|
-
|
|
41
|
-
require File.expand_path(
|
|
42
|
-
'../../../app/models/concerns/fog_extensions/hyperv/vhd', __FILE__)
|
|
43
|
-
Fog::Compute::Hyperv::Vhd.send(:include, FogExtensions::Hyperv::Vhd)
|
|
58
|
+
Host::Managed.prepend ::ForemanHyperv::HostManagedExtensions
|
|
44
59
|
end
|
|
60
|
+
#
|
|
61
|
+
# initializer 'foreman_hyperv.register_gettext', after: :load_config_initializers do
|
|
62
|
+
# locale_dir = File.join(File.expand_path('../..', __dir__), 'locale')
|
|
63
|
+
# locale_domain = 'foreman_hyperv'
|
|
64
|
+
# Foreman::Gettext::Support.add_text_domain locale_domain, locale_dir
|
|
65
|
+
# end
|
|
45
66
|
end
|
|
46
67
|
end
|
data/lib/foreman_hyperv.rb
CHANGED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'rake/testtask'
|
|
2
|
+
|
|
3
|
+
namespace :test do
|
|
4
|
+
desc 'Test ForemanHyperv'
|
|
5
|
+
Rake::TestTask.new :foreman_hyperv do |t|
|
|
6
|
+
test_dir = File.join(__dir__, '../..', 'test')
|
|
7
|
+
t.libs << ['test', test_dir]
|
|
8
|
+
t.pattern = "#{test_dir}/**/*_test.rb"
|
|
9
|
+
t.verbose = true
|
|
10
|
+
t.warning = false
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
namespace :foreman_hyperv do
|
|
15
|
+
task :rubocop do
|
|
16
|
+
begin
|
|
17
|
+
require 'rubocop/take_task'
|
|
18
|
+
RuboCop::RakeTask.new :rubocop_foreman_hyperv do |task|
|
|
19
|
+
task.patterns = [
|
|
20
|
+
'/app/**/*.rb',
|
|
21
|
+
'/lib/**/*.rb',
|
|
22
|
+
'/test/**/*.rb'
|
|
23
|
+
].map { |p| "#{ForemanHyperv::Engine.root}#{p}" }
|
|
24
|
+
end
|
|
25
|
+
rescue StandardError
|
|
26
|
+
puts 'Rubocop not loaded'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
Rake::Task['rubocop_foreman_hyperv'].invoke
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
Rake::Task[:test].enhance ['test:foreman_hyperv']
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: foreman_hyperv
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alexander Olofsson
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: fog-hyperv
|
|
@@ -16,56 +15,56 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.
|
|
18
|
+
version: '0.1'
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 0.
|
|
25
|
+
version: '0.1'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: bundler
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
|
-
- - "
|
|
30
|
+
- - ">="
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
32
|
+
version: '0'
|
|
34
33
|
type: :development
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
|
-
- - "
|
|
37
|
+
- - ">="
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
39
|
+
version: '0'
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: rake
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
44
43
|
requirements:
|
|
45
|
-
- - "
|
|
44
|
+
- - ">="
|
|
46
45
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
46
|
+
version: '0'
|
|
48
47
|
type: :development
|
|
49
48
|
prerelease: false
|
|
50
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
50
|
requirements:
|
|
52
|
-
- - "
|
|
51
|
+
- - ">="
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
53
|
+
version: '0'
|
|
55
54
|
- !ruby/object:Gem::Dependency
|
|
56
55
|
name: minitest
|
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
|
58
57
|
requirements:
|
|
59
|
-
- - "
|
|
58
|
+
- - ">="
|
|
60
59
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
60
|
+
version: '0'
|
|
62
61
|
type: :development
|
|
63
62
|
prerelease: false
|
|
64
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
64
|
requirements:
|
|
66
|
-
- - "
|
|
65
|
+
- - ">="
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
67
|
+
version: '0'
|
|
69
68
|
description: Hyper-V as a Compute Resource for Foreman
|
|
70
69
|
email:
|
|
71
70
|
- alexander.olofsson@liu.se
|
|
@@ -73,20 +72,16 @@ executables: []
|
|
|
73
72
|
extensions: []
|
|
74
73
|
extra_rdoc_files: []
|
|
75
74
|
files:
|
|
76
|
-
- ".gitignore"
|
|
77
|
-
- ".rubocop.yml"
|
|
78
|
-
- ".rubocop_todo.yml"
|
|
79
|
-
- ".travis.yml"
|
|
80
|
-
- CHANGELOG.md
|
|
81
|
-
- Gemfile
|
|
82
75
|
- LICENSE.txt
|
|
83
76
|
- README.md
|
|
84
77
|
- Rakefile
|
|
85
|
-
- app/assets/javascripts/
|
|
78
|
+
- app/assets/javascripts/foreman_hyperv/compute_resource_base.js
|
|
79
|
+
- app/helpers/foreman_hyperv/compute_resources_vms_helper.rb
|
|
86
80
|
- app/models/concerns/fog_extensions/hyperv/compute.rb
|
|
81
|
+
- app/models/concerns/fog_extensions/hyperv/hard_drive.rb
|
|
87
82
|
- app/models/concerns/fog_extensions/hyperv/network_adapter.rb
|
|
88
83
|
- app/models/concerns/fog_extensions/hyperv/server.rb
|
|
89
|
-
- app/models/concerns/
|
|
84
|
+
- app/models/concerns/foreman_hyperv/host_managed_extensions.rb
|
|
90
85
|
- app/models/foreman_hyperv/hyperv.rb
|
|
91
86
|
- app/views/compute_resources/form/_hyperv.html.erb
|
|
92
87
|
- app/views/compute_resources/show/_hyperv.html.erb
|
|
@@ -95,17 +90,14 @@ files:
|
|
|
95
90
|
- app/views/compute_resources_vms/form/hyperv/_volume.html.erb
|
|
96
91
|
- app/views/compute_resources_vms/index/_hyperv.html.erb
|
|
97
92
|
- app/views/compute_resources_vms/show/_hyperv.html.erb
|
|
98
|
-
- foreman_hyperv.gemspec
|
|
99
93
|
- lib/foreman_hyperv.rb
|
|
100
94
|
- lib/foreman_hyperv/engine.rb
|
|
101
95
|
- lib/foreman_hyperv/version.rb
|
|
102
|
-
-
|
|
103
|
-
|
|
104
|
-
homepage: https://github.com/ace13/foreman_hyperv
|
|
96
|
+
- lib/tasks/foreman_hyperv_tasks.rake
|
|
97
|
+
homepage: https://github.com/ananace/foreman_hyperv
|
|
105
98
|
licenses:
|
|
106
|
-
-
|
|
99
|
+
- GPL-3.0
|
|
107
100
|
metadata: {}
|
|
108
|
-
post_install_message:
|
|
109
101
|
rdoc_options: []
|
|
110
102
|
require_paths:
|
|
111
103
|
- lib
|
|
@@ -120,11 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
120
112
|
- !ruby/object:Gem::Version
|
|
121
113
|
version: '0'
|
|
122
114
|
requirements: []
|
|
123
|
-
|
|
124
|
-
rubygems_version: 2.7.6
|
|
125
|
-
signing_key:
|
|
115
|
+
rubygems_version: 3.6.9
|
|
126
116
|
specification_version: 4
|
|
127
117
|
summary: Hyper-V as a Compute Resource for Foreman
|
|
128
|
-
test_files:
|
|
129
|
-
- test/foreman_hyperv_test.rb
|
|
130
|
-
- test/test_helper.rb
|
|
118
|
+
test_files: []
|
data/.gitignore
DELETED
data/.rubocop.yml
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
inherit_from:
|
|
2
|
-
- .rubocop_todo.yml
|
|
3
|
-
|
|
4
|
-
Rails:
|
|
5
|
-
Enabled: true # always run the rails cops
|
|
6
|
-
|
|
7
|
-
# Don't enforce documentation
|
|
8
|
-
Style/Documentation:
|
|
9
|
-
Enabled: false
|
|
10
|
-
|
|
11
|
-
Style/HashSyntax:
|
|
12
|
-
Enabled: false
|
|
13
|
-
SupportedStyles:
|
|
14
|
-
- ruby19
|
|
15
|
-
- hash_rockets
|
|
16
|
-
|
|
17
|
-
# Force before_filter until upgrade to Rails 4
|
|
18
|
-
Rails/ActionFilter:
|
|
19
|
-
EnforcedStyle: filter
|
|
20
|
-
|
|
21
|
-
Metrics/MethodLength:
|
|
22
|
-
Max: 20
|
data/.rubocop_todo.yml
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# This configuration was generated by `rubocop --auto-gen-config`
|
|
2
|
-
# on 2015-05-21 16:13:17 +0300 using RuboCop version 0.26.1.
|
|
3
|
-
# The point is for the user to remove these configuration records
|
|
4
|
-
# one by one as the offenses are removed from the code base.
|
|
5
|
-
# Note that changes in the inspected code, or installation of new
|
|
6
|
-
# versions of RuboCop, may require this file to be generated again.
|
|
7
|
-
|
|
8
|
-
# Offense count: 11
|
|
9
|
-
# Configuration parameters: AllowURI, URISchemes.
|
|
10
|
-
Metrics/LineLength:
|
|
11
|
-
Max: 111
|
|
12
|
-
|
|
13
|
-
# Offense count: 8
|
|
14
|
-
Style/Documentation:
|
|
15
|
-
Enabled: false
|
|
16
|
-
|
|
17
|
-
# Offense count: 1
|
|
18
|
-
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
|
|
19
|
-
Style/Next:
|
|
20
|
-
Enabled: false
|
data/.travis.yml
DELETED
data/CHANGELOG.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
## v0.0.4 2018-04-06
|
|
2
|
-
|
|
3
|
-
- Allow setting a VM-wide VLAN value
|
|
4
|
-
- Default to using the first available cluster if one exists
|
|
5
|
-
- This allows the use of clustered machines, as long as all machines are set up with identical switch configurations
|
|
6
|
-
- Support the creation of legacy NICs for BIOS
|
|
7
|
-
- Requires fog-hyperv 0.0.8 / d4bf0fcdef691573c25744c3f3930961d5f767d6
|
|
8
|
-
|
|
9
|
-
## v0.0.3 2018-01-15
|
|
10
|
-
|
|
11
|
-
- Fix association of VMs by MAC address (case issue)
|
|
12
|
-
- Fix over-eager secure boot setting access on unpersisted VMs
|
|
13
|
-
- Fix over-eager cluster iteration, ensure the hypervisor supports clusters first (Requires fog-hyperv v0.0.6)
|
|
14
|
-
|
|
15
|
-
## v0.0.2 2017-08-30
|
|
16
|
-
|
|
17
|
-
- Add Dynamic memory settings
|
|
18
|
-
- Add JS for disabling unavailable settings to improve UX
|
|
19
|
-
- Fix secure boot setting to actually apply
|
|
20
|
-
- Skip several unnecessary Hyper-V calls to improve performance
|
|
21
|
-
- Improve VM properties view to look a little better and house another few nuggets of information
|
|
22
|
-
|
|
23
|
-
## v0.0.1 2017-08-28
|
|
24
|
-
|
|
25
|
-
- Initial release
|
data/Gemfile
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
function hypervGenerationChange(item) {
|
|
2
|
-
var toIter = ['#host_compute_attributes_secure_boot_enabled', '#compute_attribute_vm_attrs_secure_boot_enabled'];
|
|
3
|
-
gen = $(item).val();
|
|
4
|
-
|
|
5
|
-
if (gen == 1) {
|
|
6
|
-
for (var i = 0; i < toIter.length; ++i) {
|
|
7
|
-
$(toIter[i]).attr('disabled', true);
|
|
8
|
-
}
|
|
9
|
-
} else {
|
|
10
|
-
for (var i = 0; i < toIter.length; ++i) {
|
|
11
|
-
$(toIter[i]).removeAttr('disabled');
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function hypervDynamicMemoryChange(item) {
|
|
17
|
-
var toIter = [
|
|
18
|
-
'#host_compute_attributes_memory_maximum',
|
|
19
|
-
'#host_compute_attributes_memory_minimum',
|
|
20
|
-
'#compute_attribute_vm_attrs_memory_maximum',
|
|
21
|
-
'#compute_attribute_vm_attrs_memory_minimum',
|
|
22
|
-
];
|
|
23
|
-
if (item.checked) {
|
|
24
|
-
for (var i = 0; i < toIter.length; ++i) {
|
|
25
|
-
$(toIter[i]).removeAttr('disabled');
|
|
26
|
-
}
|
|
27
|
-
} else {
|
|
28
|
-
for (var i = 0; i < toIter.length; ++i) {
|
|
29
|
-
$(toIter[i]).attr('disabled', true);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|