foreman_xen 0.7.1 → 1.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 +4 -4
- data/README.md +12 -1
- data/app/assets/javascripts/foreman_xen/xenserver/cache_refresh.js +31 -18
- data/app/controllers/foreman_xen/cache_controller.rb +8 -5
- data/app/helpers/xen_compute_helper.rb +8 -103
- data/app/models/concerns/fog_extensions/xenserver/host.rb +23 -0
- data/app/models/concerns/fog_extensions/xenserver/server.rb +21 -3
- data/app/models/concerns/fog_extensions/xenserver/storage_repository.rb +45 -0
- data/app/models/concerns/fog_extensions/xenserver/vdi.rb +11 -0
- data/app/models/concerns/foreman_xen/host_extensions.rb +17 -0
- data/app/models/foreman_xen/xenserver.rb +395 -172
- data/app/views/api/v1/compute_resources/xenserver.json.rabl +1 -1
- data/app/views/api/v2/compute_resources/xenserver.json.rabl +1 -1
- data/app/views/compute_resources/form/_xenserver.html.erb +2 -4
- data/app/views/compute_resources_vms/form/_hypervisors.html.erb +15 -11
- data/app/views/compute_resources_vms/form/_image_provisioning.html.erb +49 -0
- data/app/views/compute_resources_vms/form/_isos.html.erb +15 -0
- data/app/views/compute_resources_vms/form/_network_provisioning.html.erb +26 -0
- data/app/views/compute_resources_vms/form/_profile.html.erb +5 -0
- data/app/views/compute_resources_vms/form/_templates.html.erb +13 -34
- data/app/views/compute_resources_vms/form/xenserver/_base.html.erb +22 -178
- data/app/views/compute_resources_vms/form/xenserver/_network.html.erb +23 -0
- data/app/views/compute_resources_vms/form/xenserver/_volume.html.erb +15 -0
- data/app/views/compute_resources_vms/index/_xenserver.html.erb +1 -1
- data/app/views/images/form/_xenserver.html.erb +4 -0
- data/lib/foreman_xen/engine.rb +14 -3
- data/lib/foreman_xen/version.rb +1 -1
- data/test/test_helper.rb +1 -3
- metadata +14 -7
- data/app/assets/javascripts/foreman_xen/xenserver/populate_fields.js +0 -32
- data/app/views/compute_resources_vms/form/_network.html.erb +0 -20
- data/app/views/compute_resources_vms/form/_volume.html.erb +0 -18
- data/app/views/compute_resources_vms/form/_xenstore.html.erb +0 -119
@@ -0,0 +1,15 @@
|
|
1
|
+
<%= selectable_f_with_cache_invalidation f, :sr,
|
2
|
+
options_from_collection_for_select(
|
3
|
+
compute_resource.storage_pools, :uuid, :display_name, (f.object.sr.uuid rescue nil)
|
4
|
+
),
|
5
|
+
{},
|
6
|
+
{ class: 'span2',
|
7
|
+
label: _("Storage Repository") },
|
8
|
+
{ title: 'Refresh available storage repositories',
|
9
|
+
url: url_for(controller: "foreman_xen/cache",
|
10
|
+
action: "refresh", only_path: true),
|
11
|
+
compute_resource_id: compute_resource.id,
|
12
|
+
attribute: 'storage_pools' }
|
13
|
+
%>
|
14
|
+
|
15
|
+
<%= text_f f, :virtual_size_gb, :class => "input-mini", :label => _("Size (GB)"), :value => (f.object.virtual_size.to_i / 1_073_741_824) %>
|
@@ -11,7 +11,7 @@
|
|
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.
|
14
|
+
<td><%= link_to_if_authorized vm.name, hash_for_compute_resource_vm_path(:compute_resource_id => @compute_resource, :id => vm.uuid) %></td>
|
15
15
|
<td><%= vm.vcpus_max %></td>
|
16
16
|
<td><%= (vm.memory_static_max.to_i / 1073741824).to_s %> GB</td>
|
17
17
|
<td><%= vm.power_state %> </td>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
<%= text_f f, :username, :value => @image.username || "root", :help_inline => _("The user that is used to ssh into the instance, normally cloud-user, ec2-user, ubuntu, root etc") %>
|
2
|
+
<%= checkbox_f f, :user_data, :help_inline => _("Does this image support user data input (e.g. via cloud-init)?") %>
|
3
|
+
<%= password_f f, :password, :help_inline => _("Password to authenticate with - used for SSH finish step.") %>
|
4
|
+
<%= image_field(f, :label => _("Image UUID"), :help_inline => _("UUID to template")) %>
|
data/lib/foreman_xen/engine.rb
CHANGED
@@ -17,10 +17,10 @@ module ForemanXen
|
|
17
17
|
|
18
18
|
initializer 'foreman_xen.register_plugin', :before => :finisher_hook do |app|
|
19
19
|
Foreman::Plugin.register :foreman_xen do
|
20
|
-
requires_foreman '>= 1.
|
20
|
+
requires_foreman '>= 1.20'
|
21
21
|
# Register xen compute resource in foreman
|
22
22
|
compute_resource ForemanXen::Xenserver
|
23
|
-
parameter_filter(ComputeResource, :uuid)
|
23
|
+
parameter_filter(ComputeResource, :uuid, :iso_library_mountpoint)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -43,11 +43,22 @@ module ForemanXen
|
|
43
43
|
begin
|
44
44
|
# extend fog xen server and image models.
|
45
45
|
require 'fog/xenserver/compute/models/server'
|
46
|
+
require 'fog/xenserver/compute/models/host'
|
47
|
+
require 'fog/xenserver/compute/models/vdi'
|
48
|
+
require 'fog/xenserver/compute/models/storage_repository'
|
46
49
|
require File.expand_path('../../app/models/concerns/fog_extensions/xenserver/server', __dir__)
|
50
|
+
require File.expand_path('../../app/models/concerns/fog_extensions/xenserver/host', __dir__)
|
51
|
+
require File.expand_path('../../app/models/concerns/fog_extensions/xenserver/vdi', __dir__)
|
52
|
+
require File.expand_path('../../app/models/concerns/fog_extensions/xenserver/storage_repository', __dir__)
|
47
53
|
require File.expand_path('../../app/models/concerns/foreman_xen/host_helper_extensions', __dir__)
|
54
|
+
require File.expand_path('../../app/models/concerns/foreman_xen/host_extensions', __dir__)
|
48
55
|
|
49
|
-
Fog::XenServer::Compute::Server.send(:include, ::FogExtensions::Xenserver::Server)
|
56
|
+
Fog::XenServer::Compute::Models::Server.send(:include, ::FogExtensions::Xenserver::Server)
|
57
|
+
Fog::XenServer::Compute::Models::Host.send(:include, ::FogExtensions::Xenserver::Host)
|
58
|
+
Fog::XenServer::Compute::Models::Vdi.send(:include, ::FogExtensions::Xenserver::Vdi)
|
59
|
+
Fog::XenServer::Compute::Models::StorageRepository.send(:include, ::FogExtensions::Xenserver::StorageRepository)
|
50
60
|
::HostsHelper.send(:include, ForemanXen::HostHelperExtensions)
|
61
|
+
::Host::Managed.send(:prepend, ForemanXen::HostExtensions)
|
51
62
|
rescue => e
|
52
63
|
Rails.logger.warn "Foreman-Xen: skipping engine hook (#{e})"
|
53
64
|
end
|
data/lib/foreman_xen/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -10,6 +10,4 @@ Rails.backtrace_cleaner.remove_silencers!
|
|
10
10
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
11
11
|
|
12
12
|
# Load fixtures from the engine
|
13
|
-
if ActiveSupport::TestCase.method_defined?(:fixture_path=)
|
14
|
-
ActiveSupport::TestCase.fixture_path = File.expand_path('fixtures', __dir__)
|
15
|
-
end
|
13
|
+
ActiveSupport::TestCase.fixture_path = File.expand_path('fixtures', __dir__) if ActiveSupport::TestCase.method_defined?(:fixture_path=)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_xen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Nemirovsky
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-
|
13
|
+
date: 2019-07-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: fog-xenserver
|
@@ -51,11 +51,14 @@ files:
|
|
51
51
|
- README.md
|
52
52
|
- Rakefile
|
53
53
|
- app/assets/javascripts/foreman_xen/xenserver/cache_refresh.js
|
54
|
-
- app/assets/javascripts/foreman_xen/xenserver/populate_fields.js
|
55
54
|
- app/controllers/foreman_xen/cache_controller.rb
|
56
55
|
- app/controllers/foreman_xen/snapshots_controller.rb
|
57
56
|
- app/helpers/xen_compute_helper.rb
|
57
|
+
- app/models/concerns/fog_extensions/xenserver/host.rb
|
58
58
|
- app/models/concerns/fog_extensions/xenserver/server.rb
|
59
|
+
- app/models/concerns/fog_extensions/xenserver/storage_repository.rb
|
60
|
+
- app/models/concerns/fog_extensions/xenserver/vdi.rb
|
61
|
+
- app/models/concerns/foreman_xen/host_extensions.rb
|
59
62
|
- app/models/concerns/foreman_xen/host_helper_extensions.rb
|
60
63
|
- app/models/foreman_xen/xenserver.rb
|
61
64
|
- app/views/api/v1/compute_resources/xenserver.json.rabl
|
@@ -63,15 +66,19 @@ files:
|
|
63
66
|
- app/views/compute_resources/form/_xenserver.html.erb
|
64
67
|
- app/views/compute_resources/show/_xenserver.html.erb
|
65
68
|
- app/views/compute_resources_vms/form/_hypervisors.html.erb
|
66
|
-
- app/views/compute_resources_vms/form/
|
69
|
+
- app/views/compute_resources_vms/form/_image_provisioning.html.erb
|
70
|
+
- app/views/compute_resources_vms/form/_isos.html.erb
|
71
|
+
- app/views/compute_resources_vms/form/_network_provisioning.html.erb
|
72
|
+
- app/views/compute_resources_vms/form/_profile.html.erb
|
67
73
|
- app/views/compute_resources_vms/form/_templates.html.erb
|
68
|
-
- app/views/compute_resources_vms/form/_volume.html.erb
|
69
|
-
- app/views/compute_resources_vms/form/_xenstore.html.erb
|
70
74
|
- app/views/compute_resources_vms/form/xenserver/_base.html.erb
|
75
|
+
- app/views/compute_resources_vms/form/xenserver/_network.html.erb
|
76
|
+
- app/views/compute_resources_vms/form/xenserver/_volume.html.erb
|
71
77
|
- app/views/compute_resources_vms/index/_xenserver.html.erb
|
72
78
|
- app/views/compute_resources_vms/show/_xenserver.html.erb
|
73
79
|
- app/views/foreman_xen/snapshots/new.html.erb
|
74
80
|
- app/views/foreman_xen/snapshots/show.html.erb
|
81
|
+
- app/views/images/form/_xenserver.html.erb
|
75
82
|
- config/routes.rb
|
76
83
|
- lib/foreman_xen.rb
|
77
84
|
- lib/foreman_xen/engine.rb
|
@@ -101,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
108
|
version: '0'
|
102
109
|
requirements: []
|
103
110
|
rubyforge_project:
|
104
|
-
rubygems_version: 2.7.6
|
111
|
+
rubygems_version: 2.7.6.2
|
105
112
|
signing_key:
|
106
113
|
specification_version: 4
|
107
114
|
summary: Provision and manage XEN Server from Foreman
|
@@ -1,32 +0,0 @@
|
|
1
|
-
function xenPopulateNetworks(network_list){
|
2
|
-
$('#host_compute_attributes_VIFs_print').children().remove();
|
3
|
-
for (var i = 0; i < network_list.length; i++) {
|
4
|
-
network = network_list[i];
|
5
|
-
$('#host_compute_attributes_VIFs_print').append('<option id=' + network['name'] + '>' + network['name'] + '</option>');
|
6
|
-
}
|
7
|
-
}
|
8
|
-
|
9
|
-
function xenPopulateStoragePools(results){
|
10
|
-
$('#host_compute_attributes_VBDs_sr_uuid').children().remove();
|
11
|
-
for (var i = 0; i < results.length; i++) {
|
12
|
-
result = results[i];
|
13
|
-
$('#host_compute_attributes_VBDs_sr_uuid').append('<option id=' + result['uuid'] + '>' + result['name'] + '</option>');
|
14
|
-
}
|
15
|
-
}
|
16
|
-
|
17
|
-
function xenPopulateCustomTemplates(custom_templates){
|
18
|
-
xenPopulateTemplates(custom_templates, '#host_compute_attributes_custom_template_name');
|
19
|
-
}
|
20
|
-
|
21
|
-
function xenPopulateBuiltinTemplates(builtin_templates){
|
22
|
-
xenPopulateTemplates(builtin_templates, '#host_compute_attributes_builtin_template_name');
|
23
|
-
}
|
24
|
-
|
25
|
-
function xenPopulateTemplates(results, selector){
|
26
|
-
$(selector).children().remove();
|
27
|
-
$(selector).append('<option>No template</option>');
|
28
|
-
for (var i = 0; i < results.length; i++) {
|
29
|
-
result = results[i];
|
30
|
-
$(selector).append('<option id=' + result['name'] + '>' + result['name'] + '</option>');
|
31
|
-
}
|
32
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
<div class="fields">
|
2
|
-
<div id='nat' class=''>
|
3
|
-
<%= selectable_f_with_cache_invalidation f, :print,
|
4
|
-
compute_resource.networks.map(&:name),
|
5
|
-
{ :include_blank => compute_resource.networks.any? ? false : _('No networks'),
|
6
|
-
:selected => attribute_map[:network_selected]
|
7
|
-
},
|
8
|
-
{ :class => 'span2',
|
9
|
-
:label => _('Network')
|
10
|
-
},
|
11
|
-
{
|
12
|
-
:callback => 'xenPopulateNetworks',
|
13
|
-
:title => 'Refresh available networks',
|
14
|
-
:url => '/foreman_xen/cache/refresh',
|
15
|
-
:computer_resource_id => compute_resource.id,
|
16
|
-
:attribute => 'networks'
|
17
|
-
}
|
18
|
-
%>
|
19
|
-
</div>
|
20
|
-
</div>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<div class="fields">
|
2
|
-
<%= selectable_f_with_cache_invalidation f, :sr_uuid,
|
3
|
-
xen_storage_pool_map(compute_resource),
|
4
|
-
{ :selected => attribute_map[:volume_selected] },
|
5
|
-
{ :class => "span2",
|
6
|
-
:label => _("Storage Repository"),
|
7
|
-
},
|
8
|
-
{
|
9
|
-
:callback => 'xenPopulateStoragePools',
|
10
|
-
:title => 'Refresh available storage repositories',
|
11
|
-
:url => '/foreman_xen/cache/refresh',
|
12
|
-
:computer_resource_id => compute_resource.id,
|
13
|
-
:attribute => 'storage_pools'
|
14
|
-
}
|
15
|
-
%>
|
16
|
-
|
17
|
-
<%= text_f f, :physical_size, :class => "input-mini", :label => _("Size (GB)"), :value => attribute_map[:volume_size] %>
|
18
|
-
</div>
|
@@ -1,119 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
|
3
|
-
if params[:host] && params[:host][:compute_attributes] && params[:host][:compute_attributes][:xenstore]
|
4
|
-
vmdata = params[:host][:compute_attributes][:xenstore]['vm-data']
|
5
|
-
else
|
6
|
-
vmdata = init_vmdata
|
7
|
-
end
|
8
|
-
|
9
|
-
disabled = 'readonly'
|
10
|
-
|
11
|
-
%>
|
12
|
-
|
13
|
-
<div class="children_fields">
|
14
|
-
|
15
|
-
<div class="fields">
|
16
|
-
|
17
|
-
<div class="form-group">
|
18
|
-
<label class="col-md-2 control-label" for="xenstore-vm-data-ifs-0-ip">vm-data/ifs/0/ip</label>
|
19
|
-
|
20
|
-
<div class="col-md-4">
|
21
|
-
<div class="controls">
|
22
|
-
<input <%= disabled %> id="xenstore-vm-data-ifs-0-ip" type="text" name="host[compute_attributes][xenstore][vm-data][ifs][0][ip]" class="form-control input-mini" value="<%= vmdata[:ifs]['0'][:ip] %>">
|
23
|
-
</div>
|
24
|
-
</div>
|
25
|
-
</div>
|
26
|
-
|
27
|
-
<div class="form-group">
|
28
|
-
<label class="col-md-2 control-label" for="xenstore-vm-data-ifs-0-gateway">vm-data/ifs/0/gateway</label>
|
29
|
-
|
30
|
-
<div class="col-md-4">
|
31
|
-
<div class="controls">
|
32
|
-
<input <%= disabled %> id="xenstore-vm-data-ifs-0-gateway" type="text" name="host[compute_attributes][xenstore][vm-data][ifs][0][gateway]" class="form-control input-mini" value="<%= vmdata[:ifs]['0'][:gateway] %>">
|
33
|
-
</div>
|
34
|
-
</div>
|
35
|
-
</div>
|
36
|
-
|
37
|
-
<div class="form-group">
|
38
|
-
<label class="col-md-2 control-label" for="xenstore-vm-data-ifs-0-netmask">vm-data/ifs/0/netmask</label>
|
39
|
-
|
40
|
-
<div class="col-md-4">
|
41
|
-
<div class="controls">
|
42
|
-
<input <%= disabled %> id="xenstore-vm-data-ifs-0-netmask" type="text" name="host[compute_attributes][xenstore][vm-data][ifs][0][netmask]" class="form-control input-mini" value="<%= vmdata[:ifs]['0'][:netmask] %>">
|
43
|
-
</div>
|
44
|
-
</div>
|
45
|
-
</div>
|
46
|
-
|
47
|
-
<div class="form-group">
|
48
|
-
<label class="col-md-2 control-label" for="xenstore-vm-data-nameserver1">vm-data/nameserver1</label>
|
49
|
-
|
50
|
-
<div class="col-md-4">
|
51
|
-
<input <%= disabled %> id="xenstore-vm-data-nameserver1" type="text" name="host[compute_attributes][xenstore][vm-data][nameserver1]" class="form-control input-mini" value="<%= vmdata[:nameserver1] %>">
|
52
|
-
</div>
|
53
|
-
</div>
|
54
|
-
|
55
|
-
<div class="form-group">
|
56
|
-
<label class="col-md-2 control-label" for="xenstore-vm-data-nameserver2">vm-data/nameserver2</label>
|
57
|
-
|
58
|
-
<div class="col-md-4">
|
59
|
-
<input <%= disabled %> id="xenstore-vm-data-nameserver2" type="text" name="host[compute_attributes][xenstore][vm-data][nameserver2]" class="form-control input-mini" value="<%= vmdata[:nameserver2] %>">
|
60
|
-
</div>
|
61
|
-
</div>
|
62
|
-
|
63
|
-
<div class="form-group">
|
64
|
-
<label class="col-md-2 control-label" for="xenstore-vm-data-environment">vm-data/environment</label>
|
65
|
-
|
66
|
-
<div class="col-md-4">
|
67
|
-
<input <%= disabled %> id="xenstore-vm-data-environment" type="text" name="host[compute_attributes][xenstore][vm-data][environment]" class="form-control input-mini" value="<%= vmdata[:environment] %>">
|
68
|
-
</div>
|
69
|
-
</div>
|
70
|
-
</div>
|
71
|
-
</div>
|
72
|
-
|
73
|
-
|
74
|
-
<script type="text/javascript">
|
75
|
-
function autocomplete_xenstore(subnet_id) {
|
76
|
-
url = "/subnets/" + subnet_id + "/edit";
|
77
|
-
$.get(url, function (data) {
|
78
|
-
fields = $('#primary', data);
|
79
|
-
$('#xenstore-vm-data-ifs-0-gateway').val($('#subnet_gateway', fields).val());
|
80
|
-
$('#xenstore-vm-data-ifs-0-netmask').val($('#subnet_mask', fields).val());
|
81
|
-
$('#xenstore-vm-data-nameserver1').val($('#subnet_dns_primary', fields).val());
|
82
|
-
$('#xenstore-vm-data-nameserver2').val($('#subnet_dns_secondary', fields).val());
|
83
|
-
$('#xenstore-vm-data-ifs-0-ip').val($('#host_interfaces_attributes_0_ip').val());
|
84
|
-
$('#xenstore-vm-data-environment').val($('#host_environment_id option:selected').text())
|
85
|
-
})
|
86
|
-
}
|
87
|
-
|
88
|
-
subnet_id = $('#host_interfaces_attributes_0_subnet_id option:selected').val();
|
89
|
-
|
90
|
-
if (subnet_id) {
|
91
|
-
autocomplete_xenstore(subnet_id)
|
92
|
-
}
|
93
|
-
|
94
|
-
$(document).off('change.xenstore', '#host_interfaces_attributes_0_subnet_id');
|
95
|
-
$(document).on('change.xenstore', '#host_interfaces_attributes_0_subnet_id', function (data) {
|
96
|
-
subnet_id = $('option:selected', data.target).val();
|
97
|
-
if (subnet_id) {
|
98
|
-
autocomplete_xenstore(subnet_id)
|
99
|
-
}
|
100
|
-
});
|
101
|
-
|
102
|
-
$('#xenstore-vm-data-environment').val($('#host_environment_id option:selected').text());
|
103
|
-
|
104
|
-
$(document).off('change.xenstore', '#host_environment_id');
|
105
|
-
$(document).on('change.xenstore', '#host_environment_id', function (data) {
|
106
|
-
env = $('option:selected', data.target).text();
|
107
|
-
$('#xenstore-vm-data-environment').val(env)
|
108
|
-
});
|
109
|
-
|
110
|
-
$(document).off('click.xenstore', '#compute_resource_tab a');
|
111
|
-
$(document).on('click.xenstore', '#compute_resource_tab a', function (data) {
|
112
|
-
subnet_id = $('#host_interfaces_attributes_0_subnet_id option:selected').val();
|
113
|
-
|
114
|
-
if (subnet_id) {
|
115
|
-
autocomplete_xenstore(subnet_id)
|
116
|
-
}
|
117
|
-
})
|
118
|
-
|
119
|
-
</script>
|