foreman_hyperv 0.0.3 → 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.
Files changed (33) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE.txt +1451 -12
  3. data/README.md +8 -2
  4. data/app/assets/javascripts/foreman_hyperv/compute_resource_base.js +78 -0
  5. data/app/helpers/foreman_hyperv/compute_resources_vms_helper.rb +19 -0
  6. data/app/models/concerns/fog_extensions/hyperv/compute.rb +6 -0
  7. data/app/models/concerns/fog_extensions/hyperv/hard_drive.rb +37 -0
  8. data/app/models/concerns/fog_extensions/hyperv/network_adapter.rb +115 -12
  9. data/app/models/concerns/fog_extensions/hyperv/server.rb +90 -31
  10. data/app/models/concerns/foreman_hyperv/host_managed_extensions.rb +66 -0
  11. data/app/models/foreman_hyperv/hyperv.rb +366 -131
  12. data/app/views/compute_resources/form/_hyperv.html.erb +6 -2
  13. data/app/views/compute_resources_vms/form/hyperv/_base.html.erb +53 -21
  14. data/app/views/compute_resources_vms/form/hyperv/_network.html.erb +34 -10
  15. data/app/views/compute_resources_vms/form/hyperv/_volume.html.erb +5 -2
  16. data/app/views/compute_resources_vms/index/_hyperv.html.erb +2 -2
  17. data/app/views/compute_resources_vms/show/_hyperv.html.erb +27 -9
  18. data/lib/foreman_hyperv/engine.rb +38 -17
  19. data/lib/foreman_hyperv/version.rb +3 -1
  20. data/lib/foreman_hyperv.rb +2 -0
  21. data/lib/tasks/foreman_hyperv_tasks.rake +33 -0
  22. metadata +25 -37
  23. data/.gitignore +0 -9
  24. data/.rubocop.yml +0 -22
  25. data/.rubocop_todo.yml +0 -20
  26. data/.travis.yml +0 -5
  27. data/CHANGELOG.md +0 -17
  28. data/Gemfile +0 -6
  29. data/app/assets/javascripts/compute_resources/hyperv/base.js +0 -32
  30. data/app/models/concerns/fog_extensions/hyperv/vhd.rb +0 -12
  31. data/foreman_hyperv.gemspec +0 -27
  32. data/test/foreman_hyperv_test.rb +0 -11
  33. data/test/test_helper.rb +0 -4
@@ -1,35 +1,67 @@
1
- <%= javascript_tag("$(document).on('ContentLoad', tfm.numFields.initAll)") %>
2
-
1
+ <%= javascript_include_tag("foreman_hyperv/compute_resource_base.js") %>
3
2
  <%
4
- clusters = compute_resource.clusters.map(&:name)
5
- computers = (f.object.cluster || compute_resource).hosts.map(&:name)
6
- %>
3
+ cluster_errors = []
4
+ begin
5
+ clusters = compute_resource.clusters.map(&:name)
6
+ f.object.cluster_name = clusters.first if clusters.count == 1
7
+ computers = (compute_resource.cluster(f.object.cluster_name) || compute_resource).hosts
8
+ f.object.computer_name ||= computers.first.name
9
+ rescue Fog::Hyperv::Errors::PSError => ex
10
+ # In case of errors
11
+ clusters = []
12
+ computers = []
13
+
14
+ cluster_errors << ex
15
+ end
16
+ -%>
7
17
  <% if clusters.any? %>
8
- <%= select_f f, :cluster_name, clusters, :to_s, :to_s %>
9
- <%= select_f f, :computer_name, computers, :to_s, :to_s %>
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
+ <% end -%>
10
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>
11
44
 
12
- <%
13
- generations = [ [1, 'Generation 1 (BIOS)'], [2, 'Generation 2 (UEFI)'] ]
14
- %>
15
- <%= select_f f, :generation, generations, :first, :last, {}, label: 'Generation', disabled: !new_host, onchange: 'hypervGenerationChange(this);' %>
16
- <% if new_host || f.object.generation == 2 %>
17
- <%= checkbox_f f, :secure_boot_enabled, { label: _('Use Secure Boot'), disabled: f.object.generation == 1 }, 'true', 'false' %>
18
- <% end %>
45
+ <% cluster_errors.each do |err| -%>
46
+ <div class="alert alert-warning alert-dismissable">
47
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
48
+ <span class="pficon pficon-error-circle-o "></span> <span class="text"><%= err.message %> (<%= err.info %>)</span>
49
+ </div>
50
+ <% end -%>
51
+
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 -%>
19
56
 
20
57
  <%= counter_f f, :processor_count, label: _('CPUs'), label_size: 'col-md-2' %>
21
- <%= byte_size_f f, :memory_startup, class: 'col-md-2', label: _('Memory (Startup)') %>
58
+ <%= byte_size_f f, :memory_startup, label: _('Memory (Startup)'), label_size: 'col-md-2' %>
22
59
 
60
+ <%= checkbox_f f, :dynamic_memory_enabled, { label: _('Use Dynamic Memory'), onchange: 'hypervDynamicMemoryChange(this);' }, 'true', 'false' %>
23
61
  <%= byte_size_f f, :memory_maximum, class: 'col-md-2', label: _('Memory Maximum'), disabled: !f.object.dynamic_memory_enabled %>
24
62
  <%= byte_size_f f, :memory_minimum, class: 'col-md-2', label: _('Memory Minimum'), disabled: !f.object.dynamic_memory_enabled %>
25
- <%= checkbox_f f, :dynamic_memory_enabled, { label: _('Use Dynamic Memory'), onchange: 'hypervDynamicMemoryChange(this);' }, 'true', 'false' %>
26
63
 
27
- <% if new_host %>
28
64
  <% checked = params[:host] && params[:host][:compute_attributes] && params[:host][:compute_attributes][:start] || '1' %>
29
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" %>
30
- <% end %>
31
66
 
32
67
  <%= textarea_f f, :notes, rows: '3', label: _('Notes') %>
33
- <%= f.hidden_field :id %>
34
-
35
- <%= compute_specific_js(compute_resource, 'base') %>
@@ -1,10 +1,34 @@
1
- <%
2
- networks = (f.object.computer || compute_resource).switches.map do |sw|
3
- [ sw.name, "#{sw.name}#{sw.switch_type ? " (#{sw.switch_type})" : nil}" ]
4
- end
5
- %>
6
- <%= text_f f, :name, :label => _('Name'), :label_size => 'col-md-3' %>
7
- <%= select_f f, :network, networks, :first, :last,
8
- { include_blank: true },
9
- { label: _('Network switch'), :label_size => 'col-md-3' } %>
10
- <%= f.hidden_field :id %>
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
- <%= text_f f, :path, label: _('Name'), disabled: !new_host %>
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(:compute_resource_id => @compute_resource, :id => vm.identity).merge(:auth_object => @compute_resource, :auth_action => 'view', :authorizer => authorizer) %></td>
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(:compute_resource_id => @compute_resource, :id => vm.identity).merge(:auth_object => @compute_resource, :authorizer => authorizer))) %>
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><%= @vm.generation == 1 ? 'Generation 1 (BIOS)' : 'Generation 2 (UEFI)' %></td>
28
+ <td>Generation <%= @vm.generation_num %> (<%= @vm.generation %>)</td>
29
29
  </tr>
30
- <% if @vm.generation != 1 %>
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
- <%= memory_prop :memory_startup %>
41
- <%= prop :public_ip_address %>
42
- <%= prop :mac %>
43
- <%= prop :processor_count %>
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
- initializer 'foreman_hyperv.register_plugin', :before => :finisher_hook do
6
- Foreman::Plugin.register :foreman_hyperv do
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/compute/server'
31
- require File.expand_path(
32
- '../../../app/models/concerns/fog_extensions/hyperv/server', __FILE__)
33
- Fog::Compute::Hyperv::Server.send(:include, FogExtensions::Hyperv::Server)
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/compute/network_adapter'
36
- require File.expand_path(
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
- require 'fog/hyperv/models/compute/vhd'
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ForemanHyperv
2
- VERSION = '0.0.3'.freeze
4
+ VERSION = '0.1.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'foreman_hyperv/engine'
2
4
 
3
5
  module ForemanHyperv
@@ -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.3
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: 2018-01-15 00:00:00.000000000 Z
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.0.2
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.0.2
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: '1.13'
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: '1.13'
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: '10.0'
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: '10.0'
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: '5.0'
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: '5.0'
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/compute_resources/hyperv/base.js
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/fog_extensions/hyperv/vhd.rb
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
- - test/foreman_hyperv_test.rb
103
- - test/test_helper.rb
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
- - MIT
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
- rubyforge_project:
124
- rubygems_version: 2.6.14
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
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
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
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.1.9
5
- before_install: gem install bundler -v 1.13.7
data/CHANGELOG.md DELETED
@@ -1,17 +0,0 @@
1
- ## v0.0.3 2018-01-15
2
-
3
- - Fix association of VMs by MAC address (case issue)
4
- - Fix over-eager secure boot setting access on unpersisted VMs
5
- - Fix over-eager cluster iteration, ensure the hypervisor supports clusters first (Requires fog-hyperv v0.0.6)
6
-
7
- ## v0.0.2 2017-08-30
8
-
9
- - Add Dynamic memory settings
10
- - Add JS for disabling unavailable settings to improve UX
11
- - Fix secure boot setting to actually apply
12
- - Skip several unnecessary Hyper-V calls to improve performance
13
- - Improve VM properties view to look a little better and house another few nuggets of information
14
-
15
- ## v0.0.1 2017-08-28
16
-
17
- - Initial release
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in foreman_hyperv.gemspec
4
- gemspec
5
-
6
- # gem 'fog-hyperv', github: 'ace13/fog-hyperv', branch: 'master'
@@ -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
- }
@@ -1,12 +0,0 @@
1
- module FogExtensions
2
- module Hyperv
3
- module Vhd
4
- extend ActiveSupport::Concern
5
- include ActionView::Helpers::NumberHelper
6
-
7
- def id
8
- identity
9
- end
10
- end
11
- end
12
- end