foreman_snapshot_management 1.7.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/app/models/concerns/fog_extensions/proxmox/snapshots/mock.rb +24 -0
- data/app/models/foreman_snapshot_management/proxmox_extensions.rb +101 -0
- data/app/models/foreman_snapshot_management/snapshot.rb +1 -1
- data/app/models/foreman_snapshot_management/vmware_extensions.rb +1 -1
- data/app/views/foreman_snapshot_management/snapshots/_index.html.erb +13 -7
- data/lib/foreman_snapshot_management/engine.rb +32 -14
- data/lib/foreman_snapshot_management/version.rb +1 -1
- data/locale/de/LC_MESSAGES/foreman_snapshot_management.mo +0 -0
- data/locale/de/foreman_snapshot_management.po +77 -51
- data/locale/en/LC_MESSAGES/foreman_snapshot_management.mo +0 -0
- data/locale/en/foreman_snapshot_management.po +30 -10
- data/locale/foreman_snapshot_management.pot +46 -20
- data/locale/gemspec.rb +1 -1
- data/test/controllers/api/v2/snapshots_test.rb +83 -10
- data/test/controllers/foreman_snapshot_management/snapshots_controller_test.rb +58 -6
- data/test/factories/proxmox_factory.rb +18 -0
- data/test/test_plugin_helper.rb +3 -0
- metadata +13 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9efa1f527f44cb80179813e24eef241905760743d411098da6627d6ee8975c2
|
4
|
+
data.tar.gz: 569d6387f7a18d74b7f3bdd916de43aefb91d9938618cba15763a9b18e9e08ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b04015470b2427bc450c69c5e008a33250c2decdebc45a52a7a092f221c34a38d1dd184da7938a400491332b97ac393e79e3fb502c2e0ff82de9ea19b1718a7
|
7
|
+
data.tar.gz: 70a2bca8aea94deda793f1434c7935587ea43beb983db1c9a3e583fee84d5bc73f3d61f2eaa44a83bf19e3d02f3725697b6c4dd84a861a582c439814fd37128e
|
data/README.md
CHANGED
@@ -3,7 +3,9 @@
|
|
3
3
|
# ForemanSnapshotManagement
|
4
4
|
|
5
5
|
ForemanSnapshotManagement is a Foreman plugin to manage snapshots.
|
6
|
-
As Hypervisor
|
6
|
+
As Hypervisor the following systems are supported:
|
7
|
+
- VMware vSphere
|
8
|
+
- [Proxmox](https://www.proxmox.com/)
|
7
9
|
|
8
10
|
## Features
|
9
11
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module FogExtensions
|
4
|
+
module Proxmox
|
5
|
+
module Snapshots
|
6
|
+
module Mock
|
7
|
+
def status_task(_node, _upid)
|
8
|
+
{
|
9
|
+
'type' => 'qmsnapshot',
|
10
|
+
'starttime' => 1_580_720_848,
|
11
|
+
'pstart' => 1_864_464_143,
|
12
|
+
'node' => 'proxmox',
|
13
|
+
'upid' => 'UPID:proxmox:00003E13:6F21770F:5E37E2D0:qmsnapshot:100:root@pam:',
|
14
|
+
'user' => 'root@pam',
|
15
|
+
'exitstatus' => 'OK',
|
16
|
+
'status' => 'stopped',
|
17
|
+
'id' => '100',
|
18
|
+
'pid' => 15_891
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ForemanSnapshotManagement
|
4
|
+
module ProxmoxExtensions
|
5
|
+
# Extend Proxmox's capabilities with snapshots.
|
6
|
+
def capabilities
|
7
|
+
super + [:snapshots]
|
8
|
+
end
|
9
|
+
|
10
|
+
# Create a Snapshot.
|
11
|
+
#
|
12
|
+
# This method creates a Snapshot with a given name and optional description.
|
13
|
+
def create_snapshot(host, name, description, _include_ram = false)
|
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 name =~ /^[A-Za-z][\w]{1,}$/
|
16
|
+
|
17
|
+
snapshot = server.snapshots.create(name: name)
|
18
|
+
snapshot.description = description
|
19
|
+
snapshot.update
|
20
|
+
rescue StandardError => e
|
21
|
+
Foreman::Logging.exception('Error creating Proxmox Snapshot', e)
|
22
|
+
raise ::Foreman::WrappedException.new(e, N_('Unable to create Proxmox Snapshot'))
|
23
|
+
end
|
24
|
+
|
25
|
+
# Remove Snapshot
|
26
|
+
#
|
27
|
+
# This method removes a Snapshot from a given host.
|
28
|
+
def remove_snapshot(snapshot)
|
29
|
+
snapshot.destroy
|
30
|
+
rescue StandardError => e
|
31
|
+
Foreman::Logging.exception('Error removing Proxmox Snapshot', e)
|
32
|
+
raise ::Foreman::WrappedException.new(e, N_('Unable to remove Proxmox Snapshot'))
|
33
|
+
end
|
34
|
+
|
35
|
+
# Revert Snapshot
|
36
|
+
#
|
37
|
+
# This method revert a host to a given Snapshot.
|
38
|
+
def revert_snapshot(snapshot)
|
39
|
+
snapshot.rollback
|
40
|
+
rescue StandardError => e
|
41
|
+
Foreman::Logging.exception('Error reverting Proxmox Snapshot', e)
|
42
|
+
raise ::Foreman::WrappedException.new(e, N_('Unable to revert Proxmox Snapshot'))
|
43
|
+
end
|
44
|
+
|
45
|
+
# Update Snapshot
|
46
|
+
#
|
47
|
+
# This method renames a Snapshot from a given host.
|
48
|
+
def update_snapshot(snapshot, name, description)
|
49
|
+
raise _('Snapshot name cannot be changed') if snapshot.name != name
|
50
|
+
|
51
|
+
snapshot.description = description
|
52
|
+
snapshot.update
|
53
|
+
rescue StandardError => e
|
54
|
+
Foreman::Logging.exception('Error updating Proxmox Snapshot', e)
|
55
|
+
raise ::Foreman::WrappedException.new(e, N_('Unable to update Proxmox Snapshot'))
|
56
|
+
end
|
57
|
+
|
58
|
+
# Get Snapshot
|
59
|
+
#
|
60
|
+
# This methods returns a specific Snapshot for a given host.
|
61
|
+
def get_snapshot(host, snapshot_id)
|
62
|
+
server = find_vm_by_uuid host.uuid
|
63
|
+
snapshot = server.snapshots.get(snapshot_id)
|
64
|
+
raw_to_snapshot(host, snapshot)
|
65
|
+
end
|
66
|
+
|
67
|
+
# Get Snapshot by name
|
68
|
+
#
|
69
|
+
# This method returns a specific Snapshot for a given host.
|
70
|
+
def get_snapshot_by_name(host, name)
|
71
|
+
server = find_vm_by_uuid host.uuid
|
72
|
+
snapshot = server.snapshots.get(name)
|
73
|
+
raw_to_snapshot(host, snapshot) if snapshot
|
74
|
+
end
|
75
|
+
|
76
|
+
# Get Snapshots
|
77
|
+
#
|
78
|
+
# This methods returns Snapshots for a given host.
|
79
|
+
def get_snapshots(host)
|
80
|
+
server = find_vm_by_uuid host.uuid
|
81
|
+
server.snapshots.delete(server.snapshots.get('current'))
|
82
|
+
server.snapshots.map do |snapshot|
|
83
|
+
raw_to_snapshot(host, snapshot)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
def raw_to_snapshot(host, raw_snapshot)
|
90
|
+
if raw_snapshot
|
91
|
+
Snapshot.new(
|
92
|
+
host: host,
|
93
|
+
id: raw_snapshot.name,
|
94
|
+
raw_snapshot: raw_snapshot,
|
95
|
+
name: raw_snapshot.name,
|
96
|
+
description: raw_snapshot.description
|
97
|
+
)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -4,7 +4,9 @@
|
|
4
4
|
<tr>
|
5
5
|
<th class="col-md-1"><%= _('Snapshot') %></th>
|
6
6
|
<th class="col-md-2"><%= _('Description') %></th>
|
7
|
-
|
7
|
+
<% if @host.compute_resource.capable?(:snapshot_include_ram) %>
|
8
|
+
<th class="col-md-1"><%= _('Include RAM') %></th>
|
9
|
+
<% end %>
|
8
10
|
<th class="col-md-1"><%= _('Action') %></th>
|
9
11
|
</tr>
|
10
12
|
</thead>
|
@@ -17,9 +19,11 @@
|
|
17
19
|
<td>
|
18
20
|
<%= f.text_field :description, class: 'form-control' %>
|
19
21
|
</td>
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
<% if @host.compute_resource.capable?(:snapshot_include_ram) %>
|
23
|
+
<td>
|
24
|
+
<%= f.check_box :include_ram, class: 'form-control' %>
|
25
|
+
</td>
|
26
|
+
<% end %>
|
23
27
|
<td>
|
24
28
|
<%= f.submit _('Create'), class: 'btn btn-success', :onclick => "$(this).attr('disabled', 'disabled'); $(this).parents('form').submit();" %>
|
25
29
|
</td>
|
@@ -28,7 +32,7 @@
|
|
28
32
|
<% @snapshots.each do |snapshot| %>
|
29
33
|
<tr>
|
30
34
|
<td>
|
31
|
-
<% if authorized_for(:auth_object => @host, :permission => :edit_snapshots) %>
|
35
|
+
<% if authorized_for(:auth_object => @host, :permission => :edit_snapshots) && @host.compute_resource.capable?(:editable_snapshot_name) %>
|
32
36
|
<%= edit_textfield snapshot, :name %>
|
33
37
|
<% else %>
|
34
38
|
<%= snapshot.name %>
|
@@ -42,8 +46,10 @@
|
|
42
46
|
<%= snapshot.description %>
|
43
47
|
<% end %>
|
44
48
|
</td>
|
45
|
-
|
46
|
-
|
49
|
+
<% if @host.compute_resource.capable?(:snapshot_include_ram) %>
|
50
|
+
<td>
|
51
|
+
</td>
|
52
|
+
<% end %>
|
47
53
|
<td>
|
48
54
|
<%= action_buttons(
|
49
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...')}),
|
@@ -43,14 +43,18 @@ module ForemanSnapshotManagement
|
|
43
43
|
end
|
44
44
|
|
45
45
|
# Adds roles if they do not exist
|
46
|
-
role 'Snapshot Viewer',
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
46
|
+
role 'Snapshot Viewer',
|
47
|
+
[:view_snapshots],
|
48
|
+
'Role granting permission only to view snapshots for hosts'
|
49
|
+
role 'Snapshot Manager',
|
50
|
+
[
|
51
|
+
:view_snapshots,
|
52
|
+
:create_snapshots,
|
53
|
+
:edit_snapshots,
|
54
|
+
:destroy_snapshots,
|
55
|
+
:revert_snapshots
|
56
|
+
],
|
57
|
+
'Role granting permission to manage snapshots for hosts'
|
54
58
|
|
55
59
|
extend_page('hosts/show') do |context|
|
56
60
|
context.add_pagelet :main_tabs,
|
@@ -81,13 +85,27 @@ module ForemanSnapshotManagement
|
|
81
85
|
config.to_prepare do
|
82
86
|
begin
|
83
87
|
# Load Foreman extensions
|
84
|
-
::
|
85
|
-
::HostsHelper.prepend(ForemanSnapshotManagement::HostsHelperExtension)
|
88
|
+
::HostsHelper.prepend ForemanSnapshotManagement::HostsHelperExtension
|
86
89
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
90
|
+
begin
|
91
|
+
::ForemanFogProxmox::Proxmox.prepend ForemanSnapshotManagement::ProxmoxExtensions
|
92
|
+
|
93
|
+
# Load Fog extensions
|
94
|
+
Fog::Proxmox::Compute::Mock.prepend FogExtensions::Proxmox::Snapshots::Mock if ForemanFogProxmox::Proxmox.available?
|
95
|
+
rescue StandardError => e
|
96
|
+
Rails.logger.warn "Failed to load Proxmox extension #{e}"
|
97
|
+
end
|
98
|
+
|
99
|
+
begin
|
100
|
+
::Foreman::Model::Vmware.prepend ForemanSnapshotManagement::VmwareExtensions
|
101
|
+
|
102
|
+
# Load Fog extensions
|
103
|
+
if Foreman::Model::Vmware.available?
|
104
|
+
ForemanSnapshotManagement.fog_vsphere_namespace::Real.prepend FogExtensions::Vsphere::Snapshots::Real
|
105
|
+
ForemanSnapshotManagement.fog_vsphere_namespace::Mock.prepend FogExtensions::Vsphere::Snapshots::Mock
|
106
|
+
end
|
107
|
+
rescue StandardError => e
|
108
|
+
Rails.logger.warn "Failed to load VMware extension #{e}"
|
91
109
|
end
|
92
110
|
rescue StandardError => e
|
93
111
|
Rails.logger.warn "ForemanSnapshotManagement: skipping engine hook (#{e})"
|
Binary file
|
@@ -1,136 +1,162 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (C)
|
1
|
+
# SOME DESCRIPTIVE TITLE.
|
2
|
+
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3
3
|
# This file is distributed under the same license as the foreman_snapshot_management package.
|
4
|
-
# FIRST AUTHOR <EMAIL@ADDRESS>,
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
5
5
|
#
|
6
|
+
# Translators:
|
7
|
+
# Lukáš Zapletal, 2019
|
8
|
+
# Ettore Atalan <atalanttore@googlemail.com>, 2019
|
9
|
+
# Wiederoder <stefanwiederoder@googlemail.com>, 2019
|
10
|
+
# Bryan Kearney <bryan.kearney@gmail.com>, 2019
|
11
|
+
# Martin Zimmermann <martin.zimmermann@gmx.com>, 2019
|
12
|
+
# Markus Bucher <bucher@atix.de>, 2020
|
13
|
+
#
|
14
|
+
#, fuzzy
|
6
15
|
msgid ""
|
7
16
|
msgstr ""
|
8
|
-
"Project-Id-Version: foreman_snapshot_management 1.
|
17
|
+
"Project-Id-Version: foreman_snapshot_management 1.7.0\n"
|
9
18
|
"Report-Msgid-Bugs-To: \n"
|
10
|
-
"PO-Revision-Date: 2019-10-22
|
11
|
-
"Last-Translator:
|
12
|
-
"Language-Team: German\n"
|
13
|
-
"Language: de\n"
|
19
|
+
"PO-Revision-Date: 2019-10-22 11:54+0000\n"
|
20
|
+
"Last-Translator: Markus Bucher <bucher@atix.de>, 2020\n"
|
21
|
+
"Language-Team: German (https://www.transifex.com/foreman/teams/114/de/)\n"
|
14
22
|
"MIME-Version: 1.0\n"
|
15
23
|
"Content-Type: text/plain; charset=UTF-8\n"
|
16
24
|
"Content-Transfer-Encoding: 8bit\n"
|
17
|
-
"
|
18
|
-
"
|
25
|
+
"Language: de\n"
|
26
|
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
19
27
|
|
20
28
|
msgid "Action"
|
21
|
-
msgstr ""
|
29
|
+
msgstr "Aktion"
|
22
30
|
|
23
31
|
msgid "Are you sure to delete this Snapshot?"
|
24
|
-
msgstr ""
|
32
|
+
msgstr "Wollen Sie diesen Snapshot wirklich löschen?"
|
25
33
|
|
26
34
|
msgid "Are you sure to revert this Snapshot?"
|
27
|
-
msgstr ""
|
35
|
+
msgstr "Sind Sie sicher, dass Sie diesen Snapshot wiederherstellen wollen?"
|
28
36
|
|
29
37
|
msgid "Create"
|
30
|
-
msgstr ""
|
38
|
+
msgstr "Erstellen"
|
31
39
|
|
32
40
|
msgid "Create Snapshot"
|
33
|
-
msgstr ""
|
41
|
+
msgstr "Snapshot erstellen"
|
34
42
|
|
35
43
|
msgid "Create a snapshot"
|
36
|
-
msgstr ""
|
44
|
+
msgstr "Einen Snapshot erstellen"
|
37
45
|
|
38
46
|
msgid "Created %{snapshots} for %{num} %{hosts}"
|
39
|
-
msgstr ""
|
47
|
+
msgstr "%{snapshots} für %{num} %{hosts} erstellt"
|
40
48
|
|
41
49
|
msgid "Delete a snapshot"
|
42
|
-
msgstr ""
|
50
|
+
msgstr "Snapshot löschen"
|
43
51
|
|
44
52
|
msgid "Deleting..."
|
45
|
-
msgstr ""
|
53
|
+
msgstr "Löschen..."
|
46
54
|
|
47
55
|
msgid "Description"
|
48
|
-
msgstr ""
|
56
|
+
msgstr "Beschreibung"
|
49
57
|
|
50
58
|
msgid "Description of this snapshot"
|
51
|
-
msgstr ""
|
59
|
+
msgstr "Beschreibung dieses Snapshots"
|
52
60
|
|
53
61
|
msgid "Error occurred while creating Snapshot for:%s"
|
54
|
-
msgstr ""
|
62
|
+
msgstr "Beim Erzeugen des Snapshots ist ein Fehler aufgetreten: %s"
|
55
63
|
|
56
64
|
msgid "Error occurred while creating Snapshot: %s"
|
57
|
-
msgstr ""
|
65
|
+
msgstr "Beim Erzeugen des Snaphosts ist ein Fehler aufgetreten: %s"
|
58
66
|
|
59
67
|
msgid "Error occurred while removing Snapshot: %s"
|
60
|
-
msgstr ""
|
68
|
+
msgstr "Beim Löschen des Snapshots ist ein Fehler aufgetreten: %s"
|
61
69
|
|
62
70
|
msgid "Error occurred while rolling back VM: %s"
|
63
|
-
msgstr ""
|
71
|
+
msgstr "Beim Zurücksetzen der VM ist ein Fehler aufgetreten: %s"
|
64
72
|
|
65
73
|
msgid "Failed to update Snapshot: %s"
|
66
|
-
msgstr ""
|
74
|
+
msgstr "Das Aktualisieren des Snapshots ist fehlgeschlagen: %s"
|
67
75
|
|
68
|
-
msgid "Foreman-plugin to manage snapshots in a
|
69
|
-
msgstr ""
|
76
|
+
msgid "Foreman-plugin to manage snapshots in a virtual-hardware environments."
|
77
|
+
msgstr "Ein Foremanplugin, welches Snapshots in Umgebungen mit virtueller Hardware nutzbar macht."
|
70
78
|
|
71
79
|
msgid "Include RAM"
|
72
|
-
msgstr ""
|
80
|
+
msgstr "RAM einbeziehen"
|
73
81
|
|
74
82
|
msgid "List all snapshots"
|
75
|
-
msgstr ""
|
83
|
+
msgstr "Alle Snapshots auflisten"
|
76
84
|
|
77
85
|
msgid "Loading Snapshots information ..."
|
78
|
-
msgstr ""
|
86
|
+
msgstr "Lade Snapshot Informationen ..."
|
87
|
+
|
88
|
+
msgid "Name must contain at least 2 characters starting with alphabet. Valid characters are A-Z a-z 0-9 _"
|
89
|
+
msgstr "Der Name muss aus mindestens 2 Zeichen bestehen und mit einem Buchstaben beginnen. Gültige Zeichen: A-Z a-z 0-9 _"
|
79
90
|
|
80
91
|
msgid "Name of this snapshot"
|
81
|
-
msgstr ""
|
92
|
+
msgstr "Name dieses Snapshots"
|
82
93
|
|
83
94
|
msgid "No capable hosts found."
|
84
|
-
msgstr ""
|
95
|
+
msgstr "Kein unterstützter Host gefunden."
|
85
96
|
|
86
97
|
msgid "No capable hosts selected"
|
87
|
-
msgstr ""
|
98
|
+
msgstr "Keine unterstützten Hosts ausgewählt"
|
88
99
|
|
89
100
|
msgid "No hosts were found with that id, name or query filter"
|
90
|
-
msgstr ""
|
101
|
+
msgstr "Keine Hosts wurden mit dieser Kennung, Name oder Abfrage-Filter gefunden"
|
91
102
|
|
92
103
|
msgid "Revert Host to a snapshot"
|
93
|
-
msgstr ""
|
104
|
+
msgstr "Host auf einen Snapshot zurücksetzen"
|
94
105
|
|
95
106
|
msgid "Reverting..."
|
96
|
-
msgstr ""
|
107
|
+
msgstr "Zurücksetzen..."
|
97
108
|
|
98
109
|
msgid "Rollback"
|
99
|
-
msgstr ""
|
110
|
+
msgstr "Wiederherstellen"
|
100
111
|
|
101
112
|
msgid "Snapshot"
|
102
113
|
msgid_plural "Snapshots"
|
103
|
-
msgstr[0] ""
|
104
|
-
msgstr[1] ""
|
114
|
+
msgstr[0] "Snapshot"
|
115
|
+
msgstr[1] "Snapshots"
|
116
|
+
|
117
|
+
msgid "Snapshot name cannot be changed"
|
118
|
+
msgstr "Der Name des Snapshots kann nicht geändert werden"
|
105
119
|
|
106
120
|
msgid "Snapshots"
|
107
|
-
msgstr ""
|
121
|
+
msgstr "Snapshots"
|
108
122
|
|
109
123
|
msgid "Something went wrong while selecting hosts - %s"
|
110
|
-
msgstr ""
|
124
|
+
msgstr "Fehler beim Auswählen der Hosts – %s"
|
125
|
+
|
126
|
+
msgid "Unable to create Proxmox Snapshot"
|
127
|
+
msgstr "Proxmox Snapshot konnte nicht erstellt werden"
|
111
128
|
|
112
129
|
msgid "Unable to create VMWare Snapshot"
|
113
|
-
msgstr ""
|
130
|
+
msgstr "VMWare Snapshot konnte nicht erstellt werden"
|
131
|
+
|
132
|
+
msgid "Unable to remove Proxmox Snapshot"
|
133
|
+
msgstr "Proxmox Snapshot konnte nicht gelöscht werden"
|
114
134
|
|
115
135
|
msgid "Unable to remove VMWare Snapshot"
|
116
|
-
msgstr ""
|
136
|
+
msgstr "VMWare Snapshot konnte nicht gelöscht werden"
|
137
|
+
|
138
|
+
msgid "Unable to revert Proxmox Snapshot"
|
139
|
+
msgstr "Proxmox Snapshot konnte nicht wiederhergestellt werden"
|
117
140
|
|
118
141
|
msgid "Unable to revert VMWare Snapshot"
|
119
|
-
msgstr ""
|
142
|
+
msgstr "VMWare Snapshot konnte nicht wiederhergestellt werden"
|
143
|
+
|
144
|
+
msgid "Unable to update Proxmox Snapshot"
|
145
|
+
msgstr "Proxmox Snapshot konnte nicht aktualisiert werden"
|
120
146
|
|
121
147
|
msgid "Unable to update VMWare Snapshot"
|
122
|
-
msgstr ""
|
148
|
+
msgstr "VMWare Snapshot konnte nicht aktualisiert werden"
|
123
149
|
|
124
150
|
msgid "Update a snapshot"
|
125
|
-
msgstr ""
|
151
|
+
msgstr "Snapshot aktualisieren"
|
126
152
|
|
127
153
|
msgid "VM successfully rolled back."
|
128
|
-
msgstr ""
|
154
|
+
msgstr "Die VM wurde erfolgreich zurückgesetzt."
|
129
155
|
|
130
156
|
msgid "Whether to include the RAM state in the snapshot"
|
131
|
-
msgstr ""
|
157
|
+
msgstr "Ob auch der aktuelle Hauptspeicherstand im Snapshot gespeichert werden soll"
|
132
158
|
|
133
159
|
msgid "host"
|
134
160
|
msgid_plural "hosts"
|
135
|
-
msgstr[0] ""
|
136
|
-
msgstr[1] ""
|
161
|
+
msgstr[0] "Host"
|
162
|
+
msgstr[1] "Hosts"
|
Binary file
|
@@ -1,19 +1,21 @@
|
|
1
|
-
# foreman_snapshot_management
|
2
|
-
#
|
3
|
-
# This file is distributed under the same license as foreman_snapshot_management.
|
1
|
+
# English translations for foreman_snapshot_management package.
|
2
|
+
# Copyright (C) 2020 THE PACKAGE'S COPYRIGHT HOLDER
|
3
|
+
# This file is distributed under the same license as the foreman_snapshot_management package.
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
4
5
|
#
|
5
6
|
msgid ""
|
6
7
|
msgstr ""
|
7
|
-
"Project-Id-Version:
|
8
|
+
"Project-Id-Version: foreman_snapshot_management 1.7.0\n"
|
8
9
|
"Report-Msgid-Bugs-To: \n"
|
9
|
-
"PO-Revision-Date:
|
10
|
-
"Last-Translator:
|
11
|
-
"Language-Team:
|
12
|
-
"Language: \n"
|
10
|
+
"PO-Revision-Date: 2020-03-02 10:27+0000\n"
|
11
|
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
12
|
+
"Language-Team: English\n"
|
13
|
+
"Language: en\n"
|
13
14
|
"MIME-Version: 1.0\n"
|
14
15
|
"Content-Type: text/plain; charset=UTF-8\n"
|
15
16
|
"Content-Transfer-Encoding: 8bit\n"
|
16
|
-
"Plural-Forms: nplurals=2; plural=
|
17
|
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
18
|
+
"\n"
|
17
19
|
|
18
20
|
msgid "Action"
|
19
21
|
msgstr ""
|
@@ -63,7 +65,7 @@ msgstr ""
|
|
63
65
|
msgid "Failed to update Snapshot: %s"
|
64
66
|
msgstr ""
|
65
67
|
|
66
|
-
msgid "Foreman-plugin to manage snapshots in a
|
68
|
+
msgid "Foreman-plugin to manage snapshots in a virtual-hardware environments."
|
67
69
|
msgstr ""
|
68
70
|
|
69
71
|
msgid "Include RAM"
|
@@ -75,6 +77,9 @@ msgstr ""
|
|
75
77
|
msgid "Loading Snapshots information ..."
|
76
78
|
msgstr ""
|
77
79
|
|
80
|
+
msgid "Name must contain at least 2 characters starting with alphabet. Valid characters are A-Z a-z 0-9 _"
|
81
|
+
msgstr ""
|
82
|
+
|
78
83
|
msgid "Name of this snapshot"
|
79
84
|
msgstr ""
|
80
85
|
|
@@ -101,21 +106,36 @@ msgid_plural "Snapshots"
|
|
101
106
|
msgstr[0] ""
|
102
107
|
msgstr[1] ""
|
103
108
|
|
109
|
+
msgid "Snapshot name cannot be changed"
|
110
|
+
msgstr ""
|
111
|
+
|
104
112
|
msgid "Snapshots"
|
105
113
|
msgstr ""
|
106
114
|
|
107
115
|
msgid "Something went wrong while selecting hosts - %s"
|
108
116
|
msgstr ""
|
109
117
|
|
118
|
+
msgid "Unable to create Proxmox Snapshot"
|
119
|
+
msgstr ""
|
120
|
+
|
110
121
|
msgid "Unable to create VMWare Snapshot"
|
111
122
|
msgstr ""
|
112
123
|
|
124
|
+
msgid "Unable to remove Proxmox Snapshot"
|
125
|
+
msgstr ""
|
126
|
+
|
113
127
|
msgid "Unable to remove VMWare Snapshot"
|
114
128
|
msgstr ""
|
115
129
|
|
130
|
+
msgid "Unable to revert Proxmox Snapshot"
|
131
|
+
msgstr ""
|
132
|
+
|
116
133
|
msgid "Unable to revert VMWare Snapshot"
|
117
134
|
msgstr ""
|
118
135
|
|
136
|
+
msgid "Unable to update Proxmox Snapshot"
|
137
|
+
msgstr ""
|
138
|
+
|
119
139
|
msgid "Unable to update VMWare Snapshot"
|
120
140
|
msgstr ""
|
121
141
|
|
@@ -8,8 +8,8 @@ msgid ""
|
|
8
8
|
msgstr ""
|
9
9
|
"Project-Id-Version: foreman_snapshot_management 1.0.0\n"
|
10
10
|
"Report-Msgid-Bugs-To: \n"
|
11
|
-
"POT-Creation-Date:
|
12
|
-
"PO-Revision-Date:
|
11
|
+
"POT-Creation-Date: 2020-03-02 15:24+0000\n"
|
12
|
+
"PO-Revision-Date: 2020-03-02 15:24+0000\n"
|
13
13
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14
14
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15
15
|
"Language: \n"
|
@@ -22,31 +22,31 @@ msgstr ""
|
|
22
22
|
msgid "List all snapshots"
|
23
23
|
msgstr ""
|
24
24
|
|
25
|
-
#: ../app/controllers/api/v2/snapshots_controller.rb:
|
25
|
+
#: ../app/controllers/api/v2/snapshots_controller.rb:41
|
26
26
|
msgid "Name of this snapshot"
|
27
27
|
msgstr ""
|
28
28
|
|
29
|
-
#: ../app/controllers/api/v2/snapshots_controller.rb:
|
29
|
+
#: ../app/controllers/api/v2/snapshots_controller.rb:42
|
30
30
|
msgid "Description of this snapshot"
|
31
31
|
msgstr ""
|
32
32
|
|
33
|
-
#: ../app/controllers/api/v2/snapshots_controller.rb:
|
33
|
+
#: ../app/controllers/api/v2/snapshots_controller.rb:46
|
34
34
|
msgid "Create a snapshot"
|
35
35
|
msgstr ""
|
36
36
|
|
37
|
-
#: ../app/controllers/api/v2/snapshots_controller.rb:
|
37
|
+
#: ../app/controllers/api/v2/snapshots_controller.rb:48
|
38
38
|
msgid "Whether to include the RAM state in the snapshot"
|
39
39
|
msgstr ""
|
40
40
|
|
41
|
-
#: ../app/controllers/api/v2/snapshots_controller.rb:
|
41
|
+
#: ../app/controllers/api/v2/snapshots_controller.rb:56
|
42
42
|
msgid "Update a snapshot"
|
43
43
|
msgstr ""
|
44
44
|
|
45
|
-
#: ../app/controllers/api/v2/snapshots_controller.rb:
|
45
|
+
#: ../app/controllers/api/v2/snapshots_controller.rb:65
|
46
46
|
msgid "Delete a snapshot"
|
47
47
|
msgstr ""
|
48
48
|
|
49
|
-
#: ../app/controllers/api/v2/snapshots_controller.rb:
|
49
|
+
#: ../app/controllers/api/v2/snapshots_controller.rb:73
|
50
50
|
msgid "Revert Host to a snapshot"
|
51
51
|
msgstr ""
|
52
52
|
|
@@ -79,7 +79,7 @@ msgid "Created %{snapshots} for %{num} %{hosts}"
|
|
79
79
|
msgstr ""
|
80
80
|
|
81
81
|
#: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:95
|
82
|
-
#: ../app/models/foreman_snapshot_management/snapshot.rb:
|
82
|
+
#: ../app/models/foreman_snapshot_management/snapshot.rb:52
|
83
83
|
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:5
|
84
84
|
#: ../app/views/foreman_snapshot_management/snapshots/select_multiple_host.html.erb:8
|
85
85
|
msgid "Snapshot"
|
@@ -110,6 +110,32 @@ msgstr ""
|
|
110
110
|
msgid "Create Snapshot"
|
111
111
|
msgstr ""
|
112
112
|
|
113
|
+
#: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:15
|
114
|
+
msgid ""
|
115
|
+
"Name must contain at least 2 characters starting with alphabet. Valid characte"
|
116
|
+
"rs are A-Z a-z 0-9 _"
|
117
|
+
msgstr ""
|
118
|
+
|
119
|
+
#: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:22
|
120
|
+
msgid "Unable to create Proxmox Snapshot"
|
121
|
+
msgstr ""
|
122
|
+
|
123
|
+
#: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:32
|
124
|
+
msgid "Unable to remove Proxmox Snapshot"
|
125
|
+
msgstr ""
|
126
|
+
|
127
|
+
#: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:42
|
128
|
+
msgid "Unable to revert Proxmox Snapshot"
|
129
|
+
msgstr ""
|
130
|
+
|
131
|
+
#: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:49
|
132
|
+
msgid "Snapshot name cannot be changed"
|
133
|
+
msgstr ""
|
134
|
+
|
135
|
+
#: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:55
|
136
|
+
msgid "Unable to update Proxmox Snapshot"
|
137
|
+
msgstr ""
|
138
|
+
|
113
139
|
#: ../app/models/foreman_snapshot_management/vmware_extensions.rb:18
|
114
140
|
msgid "Unable to create VMWare Snapshot"
|
115
141
|
msgstr ""
|
@@ -131,36 +157,36 @@ msgstr ""
|
|
131
157
|
msgid "Description"
|
132
158
|
msgstr ""
|
133
159
|
|
134
|
-
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:
|
160
|
+
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:8
|
135
161
|
#: ../app/views/foreman_snapshot_management/snapshots/select_multiple_host.html.erb:14
|
136
162
|
msgid "Include RAM"
|
137
163
|
msgstr ""
|
138
164
|
|
139
|
-
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:
|
165
|
+
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:10
|
140
166
|
msgid "Action"
|
141
167
|
msgstr ""
|
142
168
|
|
143
|
-
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:
|
169
|
+
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:28
|
144
170
|
msgid "Create"
|
145
171
|
msgstr ""
|
146
172
|
|
147
|
-
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:
|
173
|
+
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:55
|
148
174
|
msgid "Rollback"
|
149
175
|
msgstr ""
|
150
176
|
|
151
|
-
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:
|
177
|
+
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:55
|
152
178
|
msgid "Are you sure to revert this Snapshot?"
|
153
179
|
msgstr ""
|
154
180
|
|
155
|
-
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:
|
181
|
+
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:55
|
156
182
|
msgid "Reverting..."
|
157
183
|
msgstr ""
|
158
184
|
|
159
|
-
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:
|
185
|
+
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:56
|
160
186
|
msgid "Are you sure to delete this Snapshot?"
|
161
187
|
msgstr ""
|
162
188
|
|
163
|
-
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:
|
189
|
+
#: ../app/views/foreman_snapshot_management/snapshots/_index.html.erb:56
|
164
190
|
msgid "Deleting..."
|
165
191
|
msgstr ""
|
166
192
|
|
@@ -173,10 +199,10 @@ msgstr ""
|
|
173
199
|
msgid "Loading Snapshots information ..."
|
174
200
|
msgstr ""
|
175
201
|
|
176
|
-
#: ../lib/foreman_snapshot_management/engine.rb:
|
202
|
+
#: ../lib/foreman_snapshot_management/engine.rb:61
|
177
203
|
msgid "Snapshots"
|
178
204
|
msgstr ""
|
179
205
|
|
180
206
|
#: gemspec.rb:4
|
181
|
-
msgid "Foreman-plugin to manage snapshots in a
|
207
|
+
msgid "Foreman-plugin to manage snapshots in a virtual-hardware environments."
|
182
208
|
msgstr ""
|
data/locale/gemspec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'test_plugin_helper'
|
4
4
|
|
5
5
|
class Api::V2::SnapshotsControllerTest < ActionController::TestCase
|
6
6
|
let(:tax_location) { Location.find_by(name: 'Location 1') }
|
@@ -12,10 +12,17 @@ class Api::V2::SnapshotsControllerTest < ActionController::TestCase
|
|
12
12
|
let(:uuid) { '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
|
13
13
|
let(:host) { FactoryBot.create(:host, :managed, :compute_resource => compute_resource, :uuid => uuid) }
|
14
14
|
let(:snapshot_id) { 'snapshot-0101' }
|
15
|
+
let(:proxmox_compute_resource) do
|
16
|
+
FactoryBot.create(:proxmox_cr)
|
17
|
+
ComputeResource.find_by(type: 'ForemanFogProxmox::Proxmox')
|
18
|
+
end
|
19
|
+
let(:vmid) { '100' }
|
20
|
+
let(:proxmox_host) { FactoryBot.create(:host, :managed, :compute_resource => proxmox_compute_resource, :uuid => vmid) }
|
21
|
+
let(:proxmox_snapshot) { 'snapshot1' }
|
15
22
|
setup { ::Fog.mock! }
|
16
23
|
teardown { ::Fog.unmock! }
|
17
24
|
|
18
|
-
test 'should get index' do
|
25
|
+
test 'should get index of Vmware Snapshots' do
|
19
26
|
get :index, params: { :host_id => host.to_param }
|
20
27
|
assert_response :success
|
21
28
|
assert_not_nil assigns(:snapshots)
|
@@ -24,7 +31,17 @@ class Api::V2::SnapshotsControllerTest < ActionController::TestCase
|
|
24
31
|
assert_not_empty body['results']
|
25
32
|
end
|
26
33
|
|
27
|
-
test 'should
|
34
|
+
test 'should get index of Proxmox Snapshots' do
|
35
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
36
|
+
get :index, params: { :host_id => proxmox_host.to_param }
|
37
|
+
assert_response :success
|
38
|
+
assert_not_nil assigns(:snapshots)
|
39
|
+
body = ActiveSupport::JSON.decode(@response.body)
|
40
|
+
assert_not_empty body
|
41
|
+
assert_not_empty body['results']
|
42
|
+
end
|
43
|
+
|
44
|
+
test 'should search VMware snapshot' do
|
28
45
|
get :index, params: { :host_id => host.to_param, :search => 'name= clean' }
|
29
46
|
assert_response :success
|
30
47
|
assert_not_nil assigns(:snapshots)
|
@@ -34,12 +51,23 @@ class Api::V2::SnapshotsControllerTest < ActionController::TestCase
|
|
34
51
|
assert body['results'].count == 1
|
35
52
|
end
|
36
53
|
|
37
|
-
test 'should
|
54
|
+
test 'should search Proxmox snapshot' do
|
55
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
56
|
+
get :index, params: { :host_id => proxmox_host.to_param, :search => 'name= snapshot1' }
|
57
|
+
assert_response :success
|
58
|
+
assert_not_nil assigns(:snapshots)
|
59
|
+
body = ActiveSupport::JSON.decode(@response.body)
|
60
|
+
assert_not_empty body
|
61
|
+
assert_not_empty body['results']
|
62
|
+
assert body['results'].count == 1
|
63
|
+
end
|
64
|
+
|
65
|
+
test 'should refute search Vmware snapshot' do
|
38
66
|
get :index, params: { :host_id => host.to_param, :search => 'name != clean' }
|
39
67
|
assert_response :internal_server_error
|
40
68
|
end
|
41
69
|
|
42
|
-
test 'should show snapshot' do
|
70
|
+
test 'should show Vmware snapshot' do
|
43
71
|
get :show, params: { :host_id => host.to_param, :id => snapshot_id }
|
44
72
|
assert_not_nil assigns(:snapshot)
|
45
73
|
assert_response :success
|
@@ -47,30 +75,75 @@ class Api::V2::SnapshotsControllerTest < ActionController::TestCase
|
|
47
75
|
assert_not_empty body
|
48
76
|
end
|
49
77
|
|
50
|
-
test 'should
|
78
|
+
test 'should show Proxmox snapshot' do
|
79
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
80
|
+
get :show, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot }
|
81
|
+
assert_not_nil assigns(:snapshot)
|
82
|
+
assert_response :success
|
83
|
+
body = ActiveSupport::JSON.decode(@response.body)
|
84
|
+
assert_not_empty body
|
85
|
+
end
|
86
|
+
|
87
|
+
test 'should 404 for unknown Vmware snapshot' do
|
51
88
|
get :show, params: { :host_id => host.to_param, :id => 'does-not-exist' }
|
52
89
|
assert_response :not_found
|
53
90
|
end
|
54
91
|
|
55
|
-
test 'should create snapshot' do
|
92
|
+
test 'should create Vmware snapshot' do
|
56
93
|
post :create, params: { :host_id => host.to_param, :name => 'test' }
|
57
94
|
assert_response :created
|
58
95
|
assert_not_nil assigns(:snapshot)
|
59
96
|
end
|
60
97
|
|
61
|
-
test 'should
|
98
|
+
test 'should create Proxmox snapshot' do
|
99
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
100
|
+
post :create, params: { :host_id => proxmox_host.to_param, :name => 'test' }
|
101
|
+
assert_response :created
|
102
|
+
assert_not_nil assigns(:snapshot)
|
103
|
+
end
|
104
|
+
|
105
|
+
test 'should update Vmware snapshot' do
|
62
106
|
name = 'test'
|
63
107
|
put :update, params: { :host_id => host.to_param, :id => snapshot_id.to_param, :name => name.to_param }
|
64
108
|
assert_response :success
|
65
109
|
end
|
66
110
|
|
67
|
-
test 'should
|
111
|
+
test 'should update Proxmox snapshot' do
|
112
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
113
|
+
description = 'snapshot1 updated'
|
114
|
+
put :update, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param, :description => description.to_param }
|
115
|
+
assert_response :success
|
116
|
+
end
|
117
|
+
|
118
|
+
test 'should refute update Proxmox snapshot name' do
|
119
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
120
|
+
name = 'test'
|
121
|
+
put :update, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param, :name => name.to_param }
|
122
|
+
assert_response :unprocessable_entity
|
123
|
+
end
|
124
|
+
|
125
|
+
test 'should destroy Vmware snapshot' do
|
68
126
|
delete :destroy, params: { :host_id => host.to_param, :id => snapshot_id.to_param }
|
69
127
|
assert_response :success
|
70
128
|
end
|
71
129
|
|
72
|
-
test 'should
|
130
|
+
test 'should destroy Proxmox snapshot' do
|
131
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
132
|
+
delete :destroy, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param }
|
133
|
+
assert_response :success
|
134
|
+
body = ActiveSupport::JSON.decode(@response.body)
|
135
|
+
assert_not_nil body['name']
|
136
|
+
assert_nil body['id']
|
137
|
+
end
|
138
|
+
|
139
|
+
test 'should revert Vmware snapshot' do
|
73
140
|
put :revert, params: { :host_id => host.to_param, :id => snapshot_id.to_param }
|
74
141
|
assert_response :success
|
75
142
|
end
|
143
|
+
|
144
|
+
test 'should revert Proxmox snapshot' do
|
145
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
146
|
+
put :revert, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param }
|
147
|
+
assert_response :success
|
148
|
+
end
|
76
149
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'test_plugin_helper'
|
4
4
|
|
5
5
|
module ForemanSnapshotManagement
|
6
6
|
class SnapshotsControllerTest < ActionController::TestCase
|
@@ -15,25 +15,47 @@ module ForemanSnapshotManagement
|
|
15
15
|
let(:host) { FactoryBot.create(:host, :managed, :compute_resource => compute_resource, :uuid => uuid) }
|
16
16
|
let(:host2) { FactoryBot.create(:host, :managed, :compute_resource => compute_resource, :uuid => uuid2) }
|
17
17
|
let(:snapshot_id) { 'snapshot-0101' }
|
18
|
+
let(:proxmox_compute_resource) do
|
19
|
+
FactoryBot.create(:proxmox_cr)
|
20
|
+
ComputeResource.find_by(type: 'ForemanFogProxmox::Proxmox')
|
21
|
+
end
|
22
|
+
let(:vmid) { '100' }
|
23
|
+
let(:proxmox_host) { FactoryBot.create(:host, :managed, :compute_resource => proxmox_compute_resource, :uuid => vmid) }
|
24
|
+
let(:proxmox_snapshot) { 'snapshot1' }
|
18
25
|
setup { ::Fog.mock! }
|
19
26
|
teardown { ::Fog.unmock! }
|
20
27
|
|
21
28
|
context 'GET #index' do
|
22
|
-
test 'should get index' do
|
29
|
+
test 'should get VMware snapshot index' do
|
23
30
|
get :index, params: { :host_id => host.to_param }, session: set_session_user
|
24
31
|
assert_response :success
|
25
32
|
assert_not_nil assigns(:snapshots)
|
26
33
|
assert_template 'foreman_snapshot_management/snapshots/_index'
|
27
34
|
end
|
35
|
+
|
36
|
+
test 'should get Proxmox index' do
|
37
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
38
|
+
get :index, params: { :host_id => proxmox_host.to_param }, session: set_session_user
|
39
|
+
assert_response :success
|
40
|
+
assert_not_nil assigns(:snapshots)
|
41
|
+
assert_template 'foreman_snapshot_management/snapshots/_index'
|
42
|
+
end
|
28
43
|
end
|
29
44
|
|
30
45
|
context 'POST #create' do
|
31
|
-
test 'create valid' do
|
46
|
+
test 'create valid VMware snapshot' do
|
32
47
|
post :create, params: { :host_id => host.to_param, :snapshot => { :name => 'test' } }, session: set_session_user
|
33
48
|
assert_redirected_to host_url(host, :anchor => 'snapshots')
|
34
49
|
assert_includes flash[:notice] || flash[:success], 'Successfully created Snapshot.'
|
35
50
|
end
|
36
51
|
|
52
|
+
test 'create valid proxmox snapshot' do
|
53
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
54
|
+
post :create, params: { :host_id => proxmox_host.to_param, :snapshot => { :name => 'test' } }, session: set_session_user
|
55
|
+
assert_redirected_to host_url(proxmox_host, :anchor => 'snapshots')
|
56
|
+
assert_includes flash[:notice] || flash[:success], 'Successfully created Snapshot.'
|
57
|
+
end
|
58
|
+
|
37
59
|
test 'create valid multiple' do
|
38
60
|
post :create_multiple_host, params: { :host_ids => [host.id, host2.id], :snapshot => { :name => 'test' } }, session: set_session_user
|
39
61
|
assert_redirected_to hosts_url
|
@@ -62,6 +84,13 @@ module ForemanSnapshotManagement
|
|
62
84
|
assert_includes flash[:notice] || flash[:success], 'Successfully deleted Snapshot.'
|
63
85
|
end
|
64
86
|
|
87
|
+
test 'destroy successful' do
|
88
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
89
|
+
delete :destroy, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot }, session: set_session_user
|
90
|
+
assert_redirected_to host_url(proxmox_host, :anchor => 'snapshots')
|
91
|
+
assert_includes flash[:notice] || flash[:success], 'Successfully deleted Snapshot.'
|
92
|
+
end
|
93
|
+
|
65
94
|
test 'destroy with error' do
|
66
95
|
ForemanSnapshotManagement::Snapshot.any_instance.stubs(:destroy).returns(false)
|
67
96
|
delete :destroy, params: { :host_id => host.to_param, :id => snapshot_id }, session: set_session_user
|
@@ -71,12 +100,19 @@ module ForemanSnapshotManagement
|
|
71
100
|
end
|
72
101
|
|
73
102
|
context 'PUT #revert' do
|
74
|
-
test 'revert successful' do
|
103
|
+
test 'revert successful VMware' do
|
75
104
|
put :revert, params: { :host_id => host.to_param, :id => snapshot_id }, session: set_session_user
|
76
105
|
assert_redirected_to host_url(host, :anchor => 'snapshots')
|
77
106
|
assert_includes flash[:notice] || flash[:success], 'VM successfully rolled back.'
|
78
107
|
end
|
79
108
|
|
109
|
+
test 'revert successful proxmox snapshot' do
|
110
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
111
|
+
put :revert, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot }, session: set_session_user
|
112
|
+
assert_redirected_to host_url(proxmox_host, :anchor => 'snapshots')
|
113
|
+
assert_includes flash[:notice] || flash[:success], 'VM successfully rolled back.'
|
114
|
+
end
|
115
|
+
|
80
116
|
test 'revert with error' do
|
81
117
|
ForemanSnapshotManagement::Snapshot.any_instance.stubs(:revert).returns(false)
|
82
118
|
put :revert, params: { :host_id => host.to_param, :id => snapshot_id }, session: set_session_user
|
@@ -86,7 +122,7 @@ module ForemanSnapshotManagement
|
|
86
122
|
end
|
87
123
|
|
88
124
|
context 'PUT #update' do
|
89
|
-
test 'update successful' do
|
125
|
+
test 'update successful VMware snapsoht' do
|
90
126
|
data = { 'name' => 'test 2', 'description' => '' }
|
91
127
|
put :update, params: { :host_id => host.to_param, :id => snapshot_id, :snapshot => data }, session: set_session_user
|
92
128
|
assert_response :success
|
@@ -94,11 +130,27 @@ module ForemanSnapshotManagement
|
|
94
130
|
assert_equal(data, body)
|
95
131
|
end
|
96
132
|
|
97
|
-
test 'update
|
133
|
+
test 'update successful proxmox' do
|
134
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
135
|
+
data = { 'name' => 'snapshot1', 'description' => 'updated snapshot1' }
|
136
|
+
put :update, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot, :snapshot => data }, session: set_session_user
|
137
|
+
assert_response :success
|
138
|
+
body = ActiveSupport::JSON.decode(@response.body)
|
139
|
+
assert_equal(data, body)
|
140
|
+
end
|
141
|
+
|
142
|
+
test 'update with error VMware snapshot' do
|
98
143
|
ForemanSnapshotManagement::Snapshot.any_instance.stubs(:save).returns(false)
|
99
144
|
put :update, params: { :host_id => host.to_param, :id => snapshot_id, :snapshot => { :name => 'test 2' } }, session: set_session_user
|
100
145
|
assert_response :unprocessable_entity
|
101
146
|
end
|
147
|
+
|
148
|
+
test 'update with error proxmox snapshot' do
|
149
|
+
Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
|
150
|
+
ForemanSnapshotManagement::Snapshot.any_instance.stubs(:save).returns(false)
|
151
|
+
put :update, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot, :snapshot => { :name => 'snapshot1', :description => 'fail' } }, session: set_session_user
|
152
|
+
assert_response :unprocessable_entity
|
153
|
+
end
|
102
154
|
end
|
103
155
|
end
|
104
156
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
FactoryBot.define do
|
4
|
+
factory :proxmox_resource, :class => ComputeResource do
|
5
|
+
sequence(:name) { |n| "compute_resource#{n}" }
|
6
|
+
organizations { [Organization.find_by(name: 'Organization 1')] }
|
7
|
+
locations { [Location.find_by(name: 'Location 1')] }
|
8
|
+
|
9
|
+
trait :proxmox do
|
10
|
+
provider { 'Proxmox' }
|
11
|
+
user { 'root@pam' }
|
12
|
+
password { 'proxmox01' }
|
13
|
+
url { 'https://192.168.56.101:8006/api2/json' }
|
14
|
+
end
|
15
|
+
|
16
|
+
factory :proxmox_cr, :class => ForemanFogProxmox::Proxmox, :traits => [:proxmox]
|
17
|
+
end
|
18
|
+
end
|
data/test/test_plugin_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_snapshot_management
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ATIX AG
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.75.0
|
41
|
-
description: Foreman-plugin to manage snapshots in a
|
41
|
+
description: Foreman-plugin to manage snapshots in a virtual-hardware environments.
|
42
42
|
email:
|
43
43
|
- info@atix.de
|
44
44
|
executables: []
|
@@ -53,8 +53,10 @@ files:
|
|
53
53
|
- app/controllers/foreman_snapshot_management/snapshots_controller.rb
|
54
54
|
- app/helpers/concerns/foreman_snapshot_management/hosts_helper_extension.rb
|
55
55
|
- app/helpers/foreman_snapshot_management/snapshot_helper.rb
|
56
|
+
- app/models/concerns/fog_extensions/proxmox/snapshots/mock.rb
|
56
57
|
- app/models/concerns/fog_extensions/vsphere/snapshots/mock.rb
|
57
58
|
- app/models/concerns/fog_extensions/vsphere/snapshots/real.rb
|
59
|
+
- app/models/foreman_snapshot_management/proxmox_extensions.rb
|
58
60
|
- app/models/foreman_snapshot_management/snapshot.rb
|
59
61
|
- app/models/foreman_snapshot_management/vmware_extensions.rb
|
60
62
|
- app/views/api/v2/snapshots/base.json.rabl
|
@@ -74,16 +76,20 @@ files:
|
|
74
76
|
- lib/foreman_snapshot_management/version.rb
|
75
77
|
- lib/tasks/foreman_snapshot_management_tasks.rake
|
76
78
|
- locale/Makefile
|
79
|
+
- locale/de/LC_MESSAGES/foreman_snapshot_management.mo
|
77
80
|
- locale/de/foreman_snapshot_management.po
|
81
|
+
- locale/en/LC_MESSAGES/foreman_snapshot_management.mo
|
78
82
|
- locale/en/foreman_snapshot_management.edit.po
|
79
83
|
- locale/en/foreman_snapshot_management.po
|
80
84
|
- locale/foreman_snapshot_management.pot
|
81
85
|
- locale/gemspec.rb
|
82
86
|
- test/controllers/api/v2/snapshots_test.rb
|
83
87
|
- test/controllers/foreman_snapshot_management/snapshots_controller_test.rb
|
88
|
+
- test/factories/proxmox_factory.rb
|
84
89
|
- test/test_plugin_helper.rb
|
85
90
|
homepage: https://www.orcharhino.com
|
86
|
-
licenses:
|
91
|
+
licenses:
|
92
|
+
- GPL-3.0-only
|
87
93
|
metadata: {}
|
88
94
|
post_install_message:
|
89
95
|
rdoc_options: []
|
@@ -100,12 +106,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
106
|
- !ruby/object:Gem::Version
|
101
107
|
version: '0'
|
102
108
|
requirements: []
|
103
|
-
|
104
|
-
rubygems_version: 2.7.6.2
|
109
|
+
rubygems_version: 3.0.6
|
105
110
|
signing_key:
|
106
111
|
specification_version: 4
|
107
|
-
summary: Snapshot Management for
|
112
|
+
summary: Snapshot Management for machines on virtualization-platforms
|
108
113
|
test_files:
|
109
114
|
- test/controllers/api/v2/snapshots_test.rb
|
110
115
|
- test/controllers/foreman_snapshot_management/snapshots_controller_test.rb
|
111
116
|
- test/test_plugin_helper.rb
|
117
|
+
- test/factories/proxmox_factory.rb
|