foreman_snapshot_management 1.7.1 → 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 +4 -4
- data/README.md +3 -1
- data/Rakefile +7 -2
- data/app/controllers/api/v2/snapshots_controller.rb +22 -6
- data/app/models/foreman_snapshot_management/proxmox_extensions.rb +1 -1
- data/app/models/foreman_snapshot_management/snapshot.rb +4 -0
- data/app/views/api/v2/snapshots/base.json.rabl +2 -0
- data/app/views/foreman_snapshot_management/snapshots/_index.html.erb +12 -80
- data/app/views/hosts/_snapshots_tab.html.erb +8 -0
- data/lib/foreman_snapshot_management/engine.rb +22 -21
- data/lib/foreman_snapshot_management/version.rb +1 -1
- data/lib/tasks/foreman_snapshot_management_tasks.rake +2 -2
- data/locale/de/LC_MESSAGES/foreman_snapshot_management.mo +0 -0
- data/locale/de/foreman_snapshot_management.po +52 -19
- data/locale/en/LC_MESSAGES/foreman_snapshot_management.mo +0 -0
- data/locale/en/foreman_snapshot_management.po +44 -11
- data/locale/foreman_snapshot_management.pot +87 -25
- data/package.json +46 -0
- data/test/controllers/api/v2/snapshots_test.rb +232 -109
- data/test/controllers/foreman_snapshot_management/snapshots_controller_test.rb +1 -1
- data/test/factories/proxmox_factory.rb +1 -1
- data/webpack/components/SnapshotManagement/SnapshotManagement.js +84 -0
- data/webpack/components/SnapshotManagement/SnapshotManagementActions.js +212 -0
- data/webpack/components/SnapshotManagement/SnapshotManagementConstants.js +9 -0
- data/webpack/components/SnapshotManagement/SnapshotManagementReducer.js +100 -0
- data/webpack/components/SnapshotManagement/SnapshotManagementSelectors.js +8 -0
- data/webpack/components/SnapshotManagement/__tests__/SnapshotManagementActions.test.js +123 -0
- data/webpack/components/SnapshotManagement/__tests__/SnapshotManagementReducer.test.js +157 -0
- data/webpack/components/SnapshotManagement/__tests__/__snapshots__/SnapshotManagementActions.test.js.snap +314 -0
- data/webpack/components/SnapshotManagement/__tests__/__snapshots__/SnapshotManagementReducer.test.js.snap +214 -0
- data/webpack/components/SnapshotManagement/components/SnapshotForm/SnapshotForm.js +118 -0
- data/webpack/components/SnapshotManagement/components/SnapshotForm/SnapshotFormConstants.js +5 -0
- data/webpack/components/SnapshotManagement/components/SnapshotForm/__tests__/SnapshotForm.test.js +26 -0
- data/webpack/components/SnapshotManagement/components/SnapshotForm/__tests__/__snapshots__/SnapshotForm.test.js.snap +476 -0
- data/webpack/components/SnapshotManagement/components/SnapshotForm/index.js +19 -0
- data/webpack/components/SnapshotManagement/components/SnapshotForm/snapshotForm.scss +3 -0
- data/webpack/components/SnapshotManagement/components/SnapshotFormModal/SnapshotFormModal.js +37 -0
- data/webpack/components/SnapshotManagement/components/SnapshotFormModal/SnapshotFormModalConstants.js +1 -0
- data/webpack/components/SnapshotManagement/components/SnapshotFormModal/__tests__/SnapshotFormModal.test.js +19 -0
- data/webpack/components/SnapshotManagement/components/SnapshotFormModal/__tests__/__snapshots__/SnapshotFormModal.test.js.snap +19 -0
- data/webpack/components/SnapshotManagement/components/SnapshotFormModal/index.js +12 -0
- data/webpack/components/SnapshotManagement/components/SnapshotFormModal/useSnapshotFormModal.js +7 -0
- data/webpack/components/SnapshotManagement/components/SnapshotList/SnapshotList.js +314 -0
- data/webpack/components/SnapshotManagement/components/SnapshotList/SnapshotListHelper.js +70 -0
- data/webpack/components/SnapshotManagement/components/SnapshotList/__tests__/SnapshotList.test.js +88 -0
- data/webpack/components/SnapshotManagement/components/SnapshotList/__tests__/__snapshots__/SnapshotList.test.js.snap +1081 -0
- data/webpack/components/SnapshotManagement/components/SnapshotList/snapshotList.scss +13 -0
- data/webpack/components/SnapshotManagement/index.js +33 -0
- data/webpack/components/SnapshotManagement/snapshotManagement.scss +5 -0
- data/webpack/global_index.js +7 -0
- data/webpack/global_test_setup.js +11 -0
- data/webpack/index.js +8 -0
- data/webpack/reducers.js +7 -0
- data/webpack/test_setup.js +17 -0
- metadata +39 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b21ddce3f89248da10faf11e3c9ed617c68b9500be5ef2f0a4557462e670912c
|
4
|
+
data.tar.gz: e345def34460802d4491dded6341ff0089c733cbeb1ce7b925e321f0c8be8caf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70868762e401d992c5aeeda419491ccbe294f57c20bd87c4eab30c9bb7299da128f6f50a8ab640fcf83058fd62018c1aecd851ccde34b372656fb72b40e3179e
|
7
|
+
data.tar.gz: 2542bb32f1efb8ba220b8a63342313e73994990336252529a5496dc3f95dd8e5c8e41da322042042b617bb8f46bd213141821d94ea1cbfc19fdbd0c7b3210de1
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
[](https://github.com/ATIX-AG/foreman_snapshot_management/actions/workflows/react.yml)
|
2
|
+
[](https://github.com/ATIX-AG/foreman_snapshot_management/actions/workflows/ruby.yml)
|
2
3
|
|
3
4
|
# ForemanSnapshotManagement
|
4
5
|
|
@@ -22,6 +23,7 @@ See [How_to_Install_a_Plugin](http://projects.theforeman.org/projects/foreman/wi
|
|
22
23
|
|
23
24
|
| Foreman Version | Plugin Version |
|
24
25
|
| --------------- | -------------- |
|
26
|
+
| 2.3 | >= 2.0.0 |
|
25
27
|
| 1.24 | >= 1.7.0 |
|
26
28
|
| 1.23 | >= 1.7.0 |
|
27
29
|
| 1.22 | >= 1.6.0 |
|
data/Rakefile
CHANGED
@@ -14,6 +14,13 @@ rescue LoadError
|
|
14
14
|
RDoc::Task = Rake::RDocTask
|
15
15
|
end
|
16
16
|
|
17
|
+
begin
|
18
|
+
require 'rubocop/rake_task'
|
19
|
+
RuboCop::RakeTask.new
|
20
|
+
rescue StandardError => _e
|
21
|
+
puts 'Rubocop not loaded.'
|
22
|
+
end
|
23
|
+
|
17
24
|
RDoc::Task.new(:rdoc) do |rdoc|
|
18
25
|
rdoc.rdoc_dir = 'rdoc'
|
19
26
|
rdoc.title = 'ForemanSnapshotManagement'
|
@@ -22,6 +29,4 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
22
29
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
23
30
|
end
|
24
31
|
|
25
|
-
APP_RAKEFILE = File.expand_path('test/dummy/Rakefile', __dir__)
|
26
|
-
|
27
32
|
Bundler::GemHelper.install_tasks
|
@@ -6,7 +6,7 @@ module Api
|
|
6
6
|
include Api::Version2
|
7
7
|
include Foreman::Controller::Parameters::Snapshot
|
8
8
|
|
9
|
-
before_action :
|
9
|
+
before_action :find_host
|
10
10
|
before_action :check_snapshot_capability
|
11
11
|
before_action :find_resource, :only => %w[show update destroy revert]
|
12
12
|
|
@@ -19,7 +19,7 @@ module Api
|
|
19
19
|
search = params[:search].match(/^\s*name\s*=\s*(\w+)\s*$/) || params[:search].match(/^\s*name\s*=\s*\"([^"]+)\"\s*$/)
|
20
20
|
raise "Field '#{params[:search]}' not recognized for searching!" unless search
|
21
21
|
|
22
|
-
snapshot = resource_class.find_for_host_by_name(@
|
22
|
+
snapshot = resource_class.find_for_host_by_name(@host, search[1])
|
23
23
|
@snapshots = if snapshot
|
24
24
|
[snapshot].paginate(paginate_options)
|
25
25
|
else
|
@@ -49,7 +49,7 @@ module Api
|
|
49
49
|
param_group :snapshot, :as => :create
|
50
50
|
|
51
51
|
def create
|
52
|
-
@snapshot = resource_class.new(snapshot_params.to_h.merge(host: @
|
52
|
+
@snapshot = resource_class.new(snapshot_params.to_h.merge(host: @host).merge(include_ram: params[:include_ram]))
|
53
53
|
process_response @snapshot.create
|
54
54
|
end
|
55
55
|
|
@@ -80,9 +80,25 @@ module Api
|
|
80
80
|
|
81
81
|
private
|
82
82
|
|
83
|
+
# Find Host
|
84
|
+
#
|
85
|
+
# This method is responsible that methods of the controller know the current host.
|
86
|
+
def find_host
|
87
|
+
host_id = params[:host_id]
|
88
|
+
if host_id.blank?
|
89
|
+
not_found
|
90
|
+
return false
|
91
|
+
end
|
92
|
+
@host = Host.authorized("#{action_permission}_snapshots".to_sym, Host).friendly.find(host_id)
|
93
|
+
return @host if @host
|
94
|
+
|
95
|
+
not_found
|
96
|
+
false
|
97
|
+
end
|
98
|
+
|
83
99
|
def resource_scope(_options = {})
|
84
100
|
# TODO: Ask host for snapshots
|
85
|
-
@resource_scope ||= resource_class.all_for_host(@
|
101
|
+
@resource_scope ||= resource_class.all_for_host(@host)
|
86
102
|
end
|
87
103
|
|
88
104
|
def resource_scope_for_index
|
@@ -94,12 +110,12 @@ module Api
|
|
94
110
|
end
|
95
111
|
|
96
112
|
def find_resource
|
97
|
-
@snapshot = resource_class.find_for_host(@
|
113
|
+
@snapshot = resource_class.find_for_host(@host, params[:id])
|
98
114
|
not_found unless @snapshot
|
99
115
|
end
|
100
116
|
|
101
117
|
def check_snapshot_capability
|
102
|
-
not_found unless @
|
118
|
+
not_found unless @host.compute_resource&.capabilities&.include?(:snapshots)
|
103
119
|
end
|
104
120
|
|
105
121
|
def action_permission
|
@@ -12,7 +12,7 @@ module ForemanSnapshotManagement
|
|
12
12
|
# This method creates a Snapshot with a given name and optional description.
|
13
13
|
def create_snapshot(host, name, description, _include_ram = false)
|
14
14
|
server = find_vm_by_uuid host.uuid
|
15
|
-
raise _('Name must contain at least 2 characters starting with alphabet. Valid characters are A-Z a-z 0-9 _') unless
|
15
|
+
raise _('Name must contain at least 2 characters starting with alphabet. Valid characters are A-Z a-z 0-9 _') unless /^[A-Za-z][\w]{1,}$/.match?(name)
|
16
16
|
|
17
17
|
snapshot = server.snapshots.create(name: name)
|
18
18
|
snapshot.description = description
|
@@ -1,80 +1,12 @@
|
|
1
|
-
<%=
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
<tbody>
|
14
|
-
<% if authorized_for(:auth_object => @host, :permission => :create_snapshots) %>
|
15
|
-
<tr>
|
16
|
-
<td>
|
17
|
-
<%= f.text_field :name, class: 'form-control' %>
|
18
|
-
</td>
|
19
|
-
<td>
|
20
|
-
<%= f.text_field :description, class: 'form-control' %>
|
21
|
-
</td>
|
22
|
-
<% if @host.compute_resource.capable?(:snapshot_include_ram) %>
|
23
|
-
<td>
|
24
|
-
<%= f.check_box :include_ram, class: 'form-control' %>
|
25
|
-
</td>
|
26
|
-
<% end %>
|
27
|
-
<td>
|
28
|
-
<%= f.submit _('Create'), class: 'btn btn-success', :onclick => "$(this).attr('disabled', 'disabled'); $(this).parents('form').submit();" %>
|
29
|
-
</td>
|
30
|
-
</tr>
|
31
|
-
<% end %>
|
32
|
-
<% @snapshots.each do |snapshot| %>
|
33
|
-
<tr>
|
34
|
-
<td>
|
35
|
-
<% if authorized_for(:auth_object => @host, :permission => :edit_snapshots) && @host.compute_resource.capable?(:editable_snapshot_name) %>
|
36
|
-
<%= edit_textfield snapshot, :name %>
|
37
|
-
<% else %>
|
38
|
-
<%= snapshot.name %>
|
39
|
-
<% end %>
|
40
|
-
<br /><%= snapshot.formatted_create_time() %>
|
41
|
-
</td>
|
42
|
-
<td>
|
43
|
-
<% if authorized_for(:auth_object => @host, :permission => :edit_snapshots) %>
|
44
|
-
<%= edit_textarea snapshot, :description %>
|
45
|
-
<% else %>
|
46
|
-
<%= snapshot.description %>
|
47
|
-
<% end %>
|
48
|
-
</td>
|
49
|
-
<% if @host.compute_resource.capable?(:snapshot_include_ram) %>
|
50
|
-
<td>
|
51
|
-
</td>
|
52
|
-
<% end %>
|
53
|
-
<td>
|
54
|
-
<%= action_buttons(
|
55
|
-
display_link_if_authorized(_('Rollback'), hash_for_revert_host_snapshot_path(host_id: @host, id: snapshot.id).merge(:auth_object => @host, :permission => :revert_snapshots), method: :put, class: 'btn btn-primary', data: {confirm: _('Are you sure to revert this Snapshot?'), 'disable-with': _('Reverting...')}),
|
56
|
-
display_delete_if_authorized(hash_for_host_snapshot_path(host_id: @host, id: snapshot.id).merge(:auth_object => @host, :permission => :destroy_snapshots), data: {confirm: _("Are you sure to delete this Snapshot?"), 'disable-with': _('Deleting...')}),
|
57
|
-
) %>
|
58
|
-
</td>
|
59
|
-
</tr>
|
60
|
-
<% end %>
|
61
|
-
</tbody>
|
62
|
-
</table>
|
63
|
-
<% end %>
|
64
|
-
|
65
|
-
<script type="text/javascript">
|
66
|
-
//<![CDATA[
|
67
|
-
$(document).ready(function() {
|
68
|
-
$('.editable').editable({
|
69
|
-
params: {
|
70
|
-
authenticity_token: AUTH_TOKEN
|
71
|
-
},
|
72
|
-
error: function(response) {
|
73
|
-
return $.parseJSON(response.responseText).errors;
|
74
|
-
}
|
75
|
-
});
|
76
|
-
var hash = window.location.hash;
|
77
|
-
hash && $('ul.nav a[href="' + hash + '"]').tab('show');
|
78
|
-
});
|
79
|
-
//]]>
|
80
|
-
</script>
|
1
|
+
<%= react_component('SnapshotManagement', {
|
2
|
+
host: @host,
|
3
|
+
canCreate: authorized_for(:auth_object => @host, :permission => :create_snapshots),
|
4
|
+
canUpdate: authorized_for(:auth_object => @host, :permission => :edit_snapshots),
|
5
|
+
canRevert: authorized_for(:auth_object => @host, :permission => :revert_snapshots),
|
6
|
+
canDelete: authorized_for(:auth_object => @host, :permission => :destroy_snapshots),
|
7
|
+
capabilities:
|
8
|
+
{
|
9
|
+
editableSnapshotName: @host.compute_resource.capable?(:editable_snapshot_name),
|
10
|
+
limitSnapshotNameFormat: @host.compute_resource.type == "ForemanFogProxmox::Proxmox"
|
11
|
+
}
|
12
|
+
}) %>
|
@@ -1,4 +1,12 @@
|
|
1
1
|
<% if @host.compute_resource && @host.compute_resource.capabilities.include?(:snapshots) && authorized_for(:auth_object => @host, :permission => :view_snapshots) %>
|
2
|
+
|
3
|
+
<% content_for(:javascripts) do %>
|
4
|
+
<%= webpacked_plugins_js_for :foreman_snapshot_management %>
|
5
|
+
<% end %>
|
6
|
+
<% content_for(:stylesheets) do %>
|
7
|
+
<%= webpacked_plugins_css_for :foreman_snapshot_management %>
|
8
|
+
<% end %>
|
9
|
+
|
2
10
|
<div id='snapshots' class='tab-pane'
|
3
11
|
data-ajax-url='<%= host_snapshots_path(host_id: @host)%>'
|
4
12
|
data-on-complete='onContentLoad'>
|
@@ -10,7 +10,10 @@ module ForemanSnapshotManagement
|
|
10
10
|
|
11
11
|
initializer 'foreman_snapshot_management.register_plugin', before: :finisher_hook do |_app|
|
12
12
|
Foreman::Plugin.register :foreman_snapshot_management do
|
13
|
-
requires_foreman '>=
|
13
|
+
requires_foreman '>= 2.0.0'
|
14
|
+
|
15
|
+
# Add Global files for extending foreman-core components and routes
|
16
|
+
register_global_js_file 'global'
|
14
17
|
|
15
18
|
apipie_documented_controllers ["#{ForemanSnapshotManagement::Engine.root}/app/controllers/api/v2/*.rb"]
|
16
19
|
|
@@ -83,33 +86,31 @@ module ForemanSnapshotManagement
|
|
83
86
|
|
84
87
|
# Include concerns in this config.to_prepare block
|
85
88
|
config.to_prepare do
|
86
|
-
|
87
|
-
|
88
|
-
::HostsHelper.prepend ForemanSnapshotManagement::HostsHelperExtension
|
89
|
+
# Load Foreman extensions
|
90
|
+
::HostsHelper.prepend ForemanSnapshotManagement::HostsHelperExtension
|
89
91
|
|
90
|
-
|
91
|
-
|
92
|
+
begin
|
93
|
+
::ForemanFogProxmox::Proxmox.prepend ForemanSnapshotManagement::ProxmoxExtensions
|
92
94
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
95
|
+
# Load Fog extensions
|
96
|
+
Fog::Proxmox::Compute::Mock.prepend FogExtensions::Proxmox::Snapshots::Mock if ForemanFogProxmox::Proxmox.available?
|
97
|
+
rescue StandardError => e
|
98
|
+
Rails.logger.warn "Failed to load Proxmox extension #{e}"
|
99
|
+
end
|
98
100
|
|
99
|
-
|
100
|
-
|
101
|
+
begin
|
102
|
+
::Foreman::Model::Vmware.prepend ForemanSnapshotManagement::VmwareExtensions
|
101
103
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
end
|
107
|
-
rescue StandardError => e
|
108
|
-
Rails.logger.warn "Failed to load VMware extension #{e}"
|
104
|
+
# Load Fog extensions
|
105
|
+
if Foreman::Model::Vmware.available?
|
106
|
+
ForemanSnapshotManagement.fog_vsphere_namespace::Real.prepend FogExtensions::Vsphere::Snapshots::Real
|
107
|
+
ForemanSnapshotManagement.fog_vsphere_namespace::Mock.prepend FogExtensions::Vsphere::Snapshots::Mock
|
109
108
|
end
|
110
109
|
rescue StandardError => e
|
111
|
-
Rails.logger.warn "
|
110
|
+
Rails.logger.warn "Failed to load VMware extension #{e}"
|
112
111
|
end
|
112
|
+
rescue StandardError => e
|
113
|
+
Rails.logger.warn "ForemanSnapshotManagement: skipping engine hook (#{e})"
|
113
114
|
end
|
114
115
|
|
115
116
|
rake_tasks do
|
@@ -20,7 +20,7 @@ begin
|
|
20
20
|
"#{ForemanSnapshotManagement::Engine.root}/test/**/*.rb"]
|
21
21
|
|
22
22
|
namespace :foreman_snapshot_management do
|
23
|
-
task :
|
23
|
+
task rubocop: :environment do
|
24
24
|
RuboCop::RakeTask.new(:rubocop_foreman_snapshot_management) do |task|
|
25
25
|
task.patterns = test_patterns
|
26
26
|
end
|
@@ -42,7 +42,7 @@ end
|
|
42
42
|
|
43
43
|
namespace :jenkins do
|
44
44
|
desc 'Test ForemanSnapshotManagement with XML output for jenkins'
|
45
|
-
task 'foreman_snapshot_management' do
|
45
|
+
task 'foreman_snapshot_management' => :environment do
|
46
46
|
Rake::Task['jenkins:setup:minitest'].invoke
|
47
47
|
Rake::Task['rake:test:foreman_snapshot_management'].invoke
|
48
48
|
end
|
Binary file
|
@@ -5,19 +5,19 @@
|
|
5
5
|
#
|
6
6
|
# Translators:
|
7
7
|
# Lukáš Zapletal, 2019
|
8
|
-
# Ettore Atalan <atalanttore@googlemail.com>, 2019
|
9
8
|
# Wiederoder <stefanwiederoder@googlemail.com>, 2019
|
10
|
-
# Bryan Kearney <bryan.kearney@gmail.com>, 2019
|
11
9
|
# Martin Zimmermann <martin.zimmermann@gmx.com>, 2019
|
12
|
-
#
|
10
|
+
# Ettore Atalan <atalanttore@googlemail.com>, 2021
|
11
|
+
# Bryan Kearney <bryan.kearney@gmail.com>, 2021
|
12
|
+
# Markus Bucher <bucher@atix.de>, 2021
|
13
13
|
#
|
14
14
|
#, fuzzy
|
15
15
|
msgid ""
|
16
16
|
msgstr ""
|
17
|
-
"Project-Id-Version: foreman_snapshot_management 1.
|
17
|
+
"Project-Id-Version: foreman_snapshot_management 1.8.1\n"
|
18
18
|
"Report-Msgid-Bugs-To: \n"
|
19
19
|
"PO-Revision-Date: 2019-10-22 11:54+0000\n"
|
20
|
-
"Last-Translator: Markus Bucher <bucher@atix.de>,
|
20
|
+
"Last-Translator: Markus Bucher <bucher@atix.de>, 2021\n"
|
21
21
|
"Language-Team: German (https://www.transifex.com/foreman/teams/114/de/)\n"
|
22
22
|
"MIME-Version: 1.0\n"
|
23
23
|
"Content-Type: text/plain; charset=UTF-8\n"
|
@@ -28,30 +28,30 @@ msgstr ""
|
|
28
28
|
msgid "Action"
|
29
29
|
msgstr "Aktion"
|
30
30
|
|
31
|
-
msgid "
|
32
|
-
msgstr "
|
33
|
-
|
34
|
-
msgid "Are you sure to revert this Snapshot?"
|
35
|
-
msgstr "Sind Sie sicher, dass Sie diesen Snapshot wiederherstellen wollen?"
|
36
|
-
|
37
|
-
msgid "Create"
|
38
|
-
msgstr "Erstellen"
|
31
|
+
msgid "Action with sub plans"
|
32
|
+
msgstr "Aktion mit Unterplänen"
|
39
33
|
|
40
34
|
msgid "Create Snapshot"
|
41
35
|
msgstr "Snapshot erstellen"
|
42
36
|
|
37
|
+
msgid "Create Snapshot for %s"
|
38
|
+
msgstr "Snapshot anlegen für %s"
|
39
|
+
|
43
40
|
msgid "Create a snapshot"
|
44
41
|
msgstr "Einen Snapshot erstellen"
|
45
42
|
|
46
43
|
msgid "Created %{snapshots} for %{num} %{hosts}"
|
47
44
|
msgstr "%{snapshots} für %{num} %{hosts} erstellt"
|
48
45
|
|
46
|
+
msgid "Delete"
|
47
|
+
msgstr "Löschen"
|
48
|
+
|
49
|
+
msgid "Delete Snapshot \"%s\"?"
|
50
|
+
msgstr "\"%s\" wirklich löschen?"
|
51
|
+
|
49
52
|
msgid "Delete a snapshot"
|
50
53
|
msgstr "Snapshot löschen"
|
51
54
|
|
52
|
-
msgid "Deleting..."
|
53
|
-
msgstr "Löschen..."
|
54
|
-
|
55
55
|
msgid "Description"
|
56
56
|
msgstr "Beschreibung"
|
57
57
|
|
@@ -70,12 +70,24 @@ msgstr "Beim Löschen des Snapshots ist ein Fehler aufgetreten: %s"
|
|
70
70
|
msgid "Error occurred while rolling back VM: %s"
|
71
71
|
msgstr "Beim Zurücksetzen der VM ist ein Fehler aufgetreten: %s"
|
72
72
|
|
73
|
+
msgid "Error occurred while updating Snapshot: %s"
|
74
|
+
msgstr "Fehler beim Aktualisieren des Snapshots: %s"
|
75
|
+
|
76
|
+
msgid "Failed to load snapshot list"
|
77
|
+
msgstr "Fehler beim Laden der Snapshotliste"
|
78
|
+
|
73
79
|
msgid "Failed to update Snapshot: %s"
|
74
80
|
msgstr "Das Aktualisieren des Snapshots ist fehlgeschlagen: %s"
|
75
81
|
|
76
82
|
msgid "Foreman-plugin to manage snapshots in a virtual-hardware environments."
|
77
83
|
msgstr "Ein Foremanplugin, welches Snapshots in Umgebungen mit virtueller Hardware nutzbar macht."
|
78
84
|
|
85
|
+
msgid "Import Puppet classes"
|
86
|
+
msgstr "Puppet-Klassen importieren"
|
87
|
+
|
88
|
+
msgid "Import facts"
|
89
|
+
msgstr "Fakten importieren"
|
90
|
+
|
79
91
|
msgid "Include RAM"
|
80
92
|
msgstr "RAM einbeziehen"
|
81
93
|
|
@@ -85,6 +97,12 @@ msgstr "Alle Snapshots auflisten"
|
|
85
97
|
msgid "Loading Snapshots information ..."
|
86
98
|
msgstr "Lade Snapshot Informationen ..."
|
87
99
|
|
100
|
+
msgid "N/A"
|
101
|
+
msgstr "N/A"
|
102
|
+
|
103
|
+
msgid "Name"
|
104
|
+
msgstr "Name"
|
105
|
+
|
88
106
|
msgid "Name must contain at least 2 characters starting with alphabet. Valid characters are A-Z a-z 0-9 _"
|
89
107
|
msgstr "Der Name muss aus mindestens 2 Zeichen bestehen und mit einem Buchstaben beginnen. Gültige Zeichen: A-Z a-z 0-9 _"
|
90
108
|
|
@@ -103,12 +121,12 @@ msgstr "Keine Hosts wurden mit dieser Kennung, Name oder Abfrage-Filter gefunden
|
|
103
121
|
msgid "Revert Host to a snapshot"
|
104
122
|
msgstr "Host auf einen Snapshot zurücksetzen"
|
105
123
|
|
106
|
-
msgid "Reverting..."
|
107
|
-
msgstr "Zurücksetzen..."
|
108
|
-
|
109
124
|
msgid "Rollback"
|
110
125
|
msgstr "Wiederherstellen"
|
111
126
|
|
127
|
+
msgid "Rollback to \"%s\"?"
|
128
|
+
msgstr "\"%s\" wirklich wiederherstellen?"
|
129
|
+
|
112
130
|
msgid "Snapshot"
|
113
131
|
msgid_plural "Snapshots"
|
114
132
|
msgstr[0] "Snapshot"
|
@@ -117,12 +135,24 @@ msgstr[1] "Snapshots"
|
|
117
135
|
msgid "Snapshot name cannot be changed"
|
118
136
|
msgstr "Der Name des Snapshots kann nicht geändert werden"
|
119
137
|
|
138
|
+
msgid "Snapshot successfully created!"
|
139
|
+
msgstr "Snapshot erfolgreich erzeugt!"
|
140
|
+
|
120
141
|
msgid "Snapshots"
|
121
142
|
msgstr "Snapshots"
|
122
143
|
|
123
144
|
msgid "Something went wrong while selecting hosts - %s"
|
124
145
|
msgstr "Fehler beim Auswählen der Hosts – %s"
|
125
146
|
|
147
|
+
msgid "Successfully removed Snapshot \"%s\" from host %s"
|
148
|
+
msgstr "Snapshot \"%s\" erfolgreich von Host %s entfernt."
|
149
|
+
|
150
|
+
msgid "Successfully rolled back Snapshot \"%s\" on host %s"
|
151
|
+
msgstr "Snapshot \"%s\" erfolgreich auf Host %s zurückgesetzt."
|
152
|
+
|
153
|
+
msgid "Successfully updated Snapshot \"%s\""
|
154
|
+
msgstr "Snapshot \"%s\" erfolgreich aktualisiert."
|
155
|
+
|
126
156
|
msgid "Unable to create Proxmox Snapshot"
|
127
157
|
msgstr "Proxmox Snapshot konnte nicht erstellt werden"
|
128
158
|
|
@@ -156,6 +186,9 @@ msgstr "Die VM wurde erfolgreich zurückgesetzt."
|
|
156
186
|
msgid "Whether to include the RAM state in the snapshot"
|
157
187
|
msgstr "Ob auch der aktuelle Hauptspeicherstand im Snapshot gespeichert werden soll"
|
158
188
|
|
189
|
+
msgid "edit entry"
|
190
|
+
msgstr "Eintrag bearbeiten"
|
191
|
+
|
159
192
|
msgid "host"
|
160
193
|
msgid_plural "hosts"
|
161
194
|
msgstr[0] "Host"
|