foreman_snapshot_management 1.6.0 → 1.6.1
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/Rakefile +2 -0
- data/app/controllers/api/v2/snapshots_controller.rb +3 -1
- data/app/controllers/concerns/foreman/controller/parameters/snapshot.rb +2 -0
- data/app/controllers/foreman_snapshot_management/snapshots_controller.rb +4 -2
- data/app/helpers/concerns/foreman_snapshot_management/hosts_helper_extension.rb +2 -0
- data/app/helpers/foreman_snapshot_management/snapshot_helper.rb +2 -0
- data/app/models/concerns/fog_extensions/vsphere/snapshots/mock.rb +2 -0
- data/app/models/concerns/fog_extensions/vsphere/snapshots/real.rb +2 -0
- data/app/models/foreman_snapshot_management/snapshot.rb +2 -0
- data/app/models/foreman_snapshot_management/vmware_extensions.rb +2 -0
- data/app/views/api/v2/snapshots/base.json.rabl +2 -0
- data/app/views/api/v2/snapshots/create.json.rabl +2 -0
- data/app/views/api/v2/snapshots/destroy.json.rabl +2 -0
- data/app/views/api/v2/snapshots/index.json.rabl +2 -0
- data/app/views/api/v2/snapshots/main.json.rabl +2 -0
- data/app/views/api/v2/snapshots/revert.json.rabl +2 -0
- data/app/views/api/v2/snapshots/show.json.rabl +2 -0
- data/app/views/api/v2/snapshots/update.json.rabl +2 -0
- data/app/views/{foreman_snapshot_management/hosts/_snapshots_tab_content.html.erb → hosts/_snapshots_tab.html.erb} +0 -0
- data/config/routes.rb +2 -0
- data/lib/foreman_snapshot_management.rb +2 -0
- data/lib/foreman_snapshot_management/engine.rb +8 -1
- data/lib/foreman_snapshot_management/version.rb +3 -1
- data/lib/tasks/foreman_snapshot_management_tasks.rake +31 -10
- data/locale/gemspec.rb +2 -0
- data/test/controllers/api/v2/snapshots_test.rb +2 -0
- data/test/controllers/foreman_snapshot_management/snapshots_controller_test.rb +2 -0
- data/test/test_plugin_helper.rb +2 -0
- metadata +9 -26
- data/app/models/foreman_snapshot_management/proxmox_extensions.rb +0 -75
- data/app/overrides/hosts/add_tab_to_host_overview.rb +0 -11
- data/app/views/foreman_snapshot_management/hosts/_snapshots_tab.html.erb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1f7ac4fa53eca310f5b7effafa4fca21cfdf0ce1f97981892165dfa9ebc1f19
|
4
|
+
data.tar.gz: 1440f1529c9d5c02428dac9371f1d02faca2ea6c95064e51c4efa900bed5126a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41df800a5a9d08c2dac58f5bc1319840dbdaa39ee1e4cf79ef71677645cc9d64cee3de0cf310d49e0d16ba9fc41a820ae42bf31f848398d040610b42ecd88649
|
7
|
+
data.tar.gz: ca5116f54a696fbe6062d05369747a02898a283276252ae118884b075ac01fe05a3864cbf583f2cfcf6b57801283e278ac4c0949f9bf0c5ae918262cf6a7468f
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Api
|
2
4
|
module V2
|
3
5
|
class SnapshotsController < V2::BaseController
|
@@ -83,7 +85,7 @@ module Api
|
|
83
85
|
end
|
84
86
|
|
85
87
|
def check_snapshot_capability
|
86
|
-
not_found unless @nested_obj.compute_resource
|
88
|
+
not_found unless @nested_obj.compute_resource&.capabilities&.include?(:snapshots)
|
87
89
|
end
|
88
90
|
|
89
91
|
def action_permission
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module ForemanSnapshotManagement
|
2
4
|
class SnapshotsController < ApplicationController
|
3
5
|
include Foreman::Controller::ActionPermissionDsl
|
@@ -88,7 +90,7 @@ module ForemanSnapshotManagement
|
|
88
90
|
end
|
89
91
|
end
|
90
92
|
error _('Error occurred while creating Snapshot for<br /><dl>%s</dl>') % errors.map { |e| "<dt>#{e[0]}</dt><dd>#{e[1]}</dd>" }.join('<br />') unless errors.empty?
|
91
|
-
if snapshots_created
|
93
|
+
if snapshots_created.positive?
|
92
94
|
msg = _('Created %{snapshots} for %{num} %{hosts}') % {
|
93
95
|
snapshots: n_('Snapshot', 'Snapshots', snapshots_created),
|
94
96
|
num: snapshots_created,
|
@@ -169,7 +171,7 @@ module ForemanSnapshotManagement
|
|
169
171
|
end
|
170
172
|
|
171
173
|
def check_snapshot_capability
|
172
|
-
not_found unless @host.compute_resource
|
174
|
+
not_found unless @host.compute_resource&.capabilities&.include?(:snapshots)
|
173
175
|
end
|
174
176
|
|
175
177
|
def enumerate_snapshots
|
File without changes
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ForemanSnapshotManagement
|
4
4
|
class Engine < ::Rails::Engine
|
@@ -51,6 +51,13 @@ module ForemanSnapshotManagement
|
|
51
51
|
:destroy_snapshots,
|
52
52
|
:revert_snapshots
|
53
53
|
]
|
54
|
+
|
55
|
+
extend_page('hosts/show') do |context|
|
56
|
+
context.add_pagelet :main_tabs,
|
57
|
+
:name => N_('Snapshots'),
|
58
|
+
:partial => 'hosts/snapshots_tab',
|
59
|
+
:onlyif => proc { |host| host&.compute_resource&.capable?(:snapshots) }
|
60
|
+
end
|
54
61
|
end
|
55
62
|
end
|
56
63
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Tests
|
2
4
|
namespace :test do
|
3
5
|
desc 'Test ForemanSnapshotManagement'
|
@@ -10,20 +12,39 @@ namespace :test do
|
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
15
|
+
begin
|
16
|
+
require 'rubocop/rake_task'
|
17
|
+
|
18
|
+
test_patterns = ["#{ForemanSnapshotManagement::Engine.root}/app/**/*.rb",
|
19
|
+
"#{ForemanSnapshotManagement::Engine.root}/lib/**/*.rb",
|
20
|
+
"#{ForemanSnapshotManagement::Engine.root}/test/**/*.rb"]
|
21
|
+
|
22
|
+
namespace :foreman_snapshot_management do
|
23
|
+
task :rubocop do
|
17
24
|
RuboCop::RakeTask.new(:rubocop_foreman_snapshot_management) do |task|
|
18
|
-
task.patterns =
|
19
|
-
"#{ForemanSnapshotManagement::Engine.root}/lib/**/*.rb",
|
20
|
-
"#{ForemanSnapshotManagement::Engine.root}/test/**/*.rb"]
|
25
|
+
task.patterns = test_patterns
|
21
26
|
end
|
22
|
-
|
23
|
-
|
27
|
+
|
28
|
+
Rake::Task['rubocop_foreman_snapshot_management'].invoke
|
24
29
|
end
|
25
30
|
|
26
|
-
|
31
|
+
desc 'Runs Rubocop style checker with xml output for Jenkins'
|
32
|
+
RuboCop::RakeTask.new('rubocop:jenkins') do |task|
|
33
|
+
task.patterns = test_patterns
|
34
|
+
task.requires = ['rubocop/formatter/checkstyle_formatter']
|
35
|
+
task.formatters = ['RuboCop::Formatter::CheckstyleFormatter']
|
36
|
+
task.options = ['--no-color', '--out', 'rubocop.xml']
|
37
|
+
end
|
38
|
+
end
|
39
|
+
rescue LoadError
|
40
|
+
puts 'Rubocop not loaded.'
|
41
|
+
end
|
42
|
+
|
43
|
+
namespace :jenkins do
|
44
|
+
desc 'Test ForemanSnapshotManagement with XML output for jenkins'
|
45
|
+
task 'foreman_snapshot_management' do
|
46
|
+
Rake::Task['jenkins:setup:minitest'].invoke
|
47
|
+
Rake::Task['rake:test:foreman_snapshot_management'].invoke
|
27
48
|
end
|
28
49
|
end
|
29
50
|
|
data/locale/gemspec.rb
CHANGED
data/test/test_plugin_helper.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_snapshot_management
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.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: 2019-
|
11
|
+
date: 2019-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: deface
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rdoc
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
30
16
|
requirements:
|
31
|
-
- - "
|
17
|
+
- - "~>"
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
19
|
+
version: '5.1'
|
34
20
|
type: :development
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - "
|
24
|
+
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
26
|
+
version: '5.1'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rubocop
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - '='
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
33
|
+
version: 0.54.0
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - '='
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
40
|
+
version: 0.54.0
|
55
41
|
description: Foreman-plugin to manage snapshots in a vSphere environment.
|
56
42
|
email:
|
57
43
|
- info@atix.de
|
@@ -69,10 +55,8 @@ files:
|
|
69
55
|
- app/helpers/foreman_snapshot_management/snapshot_helper.rb
|
70
56
|
- app/models/concerns/fog_extensions/vsphere/snapshots/mock.rb
|
71
57
|
- app/models/concerns/fog_extensions/vsphere/snapshots/real.rb
|
72
|
-
- app/models/foreman_snapshot_management/proxmox_extensions.rb
|
73
58
|
- app/models/foreman_snapshot_management/snapshot.rb
|
74
59
|
- app/models/foreman_snapshot_management/vmware_extensions.rb
|
75
|
-
- app/overrides/hosts/add_tab_to_host_overview.rb
|
76
60
|
- app/views/api/v2/snapshots/base.json.rabl
|
77
61
|
- app/views/api/v2/snapshots/create.json.rabl
|
78
62
|
- app/views/api/v2/snapshots/destroy.json.rabl
|
@@ -81,10 +65,9 @@ files:
|
|
81
65
|
- app/views/api/v2/snapshots/revert.json.rabl
|
82
66
|
- app/views/api/v2/snapshots/show.json.rabl
|
83
67
|
- app/views/api/v2/snapshots/update.json.rabl
|
84
|
-
- app/views/foreman_snapshot_management/hosts/_snapshots_tab.html.erb
|
85
|
-
- app/views/foreman_snapshot_management/hosts/_snapshots_tab_content.html.erb
|
86
68
|
- app/views/foreman_snapshot_management/snapshots/_index.html.erb
|
87
69
|
- app/views/foreman_snapshot_management/snapshots/select_multiple_host.html.erb
|
70
|
+
- app/views/hosts/_snapshots_tab.html.erb
|
88
71
|
- config/routes.rb
|
89
72
|
- lib/foreman_snapshot_management.rb
|
90
73
|
- lib/foreman_snapshot_management/engine.rb
|
@@ -1,75 +0,0 @@
|
|
1
|
-
module ForemanSnapshotManagement
|
2
|
-
module ProxmoxExtensions
|
3
|
-
# Extend Proxmox's capabilities with snapshots.
|
4
|
-
def capabilities
|
5
|
-
super + [:snapshots]
|
6
|
-
end
|
7
|
-
|
8
|
-
# Create a Snapshot.
|
9
|
-
#
|
10
|
-
# This method creates a Snapshot with a given name and optional description.
|
11
|
-
def create_snapshot(uuid, name, description, include_ram = false)
|
12
|
-
server = node.servers.get uuid
|
13
|
-
snapshot = server.snapshots.create name
|
14
|
-
snapshot.description = description
|
15
|
-
snapshot.update
|
16
|
-
end
|
17
|
-
|
18
|
-
# Remove Snapshot
|
19
|
-
#
|
20
|
-
# This method removes a Snapshot from a given host.
|
21
|
-
def remove_snapshot(snapshot, remove_children)
|
22
|
-
task = client.remove_snapshot('snapshot' => snapshot, 'removeChildren' => remove_children)
|
23
|
-
task_successful?(task)
|
24
|
-
rescue RbVmomi::Fault => e
|
25
|
-
Foreman::Logging.exception('Error removing VMWare Snapshot', e)
|
26
|
-
raise ::Foreman::WrappedException.new(e, N_('Unable to remove VMWare Snapshot'))
|
27
|
-
end
|
28
|
-
|
29
|
-
# Revert Snapshot
|
30
|
-
#
|
31
|
-
# This method revert a host to a given Snapshot.
|
32
|
-
def revert_snapshot(snapshot)
|
33
|
-
task = client.revert_to_snapshot(snapshot)
|
34
|
-
task_successful?(task)
|
35
|
-
rescue RbVmomi::Fault => e
|
36
|
-
Foreman::Logging.exception('Error reverting VMWare Snapshot', e)
|
37
|
-
raise ::Foreman::WrappedException.new(e, N_('Unable to revert VMWare Snapshot'))
|
38
|
-
end
|
39
|
-
|
40
|
-
# Update Snapshot
|
41
|
-
#
|
42
|
-
# This method renames a Snapshot from a given host.
|
43
|
-
def update_snapshot(snapshot, name, description)
|
44
|
-
client.rename_snapshot('snapshot' => snapshot, 'name' => name, 'description' => description)
|
45
|
-
true
|
46
|
-
rescue RbVmomi::Fault => e
|
47
|
-
Foreman::Logging.exception('Error updating VMWare Snapshot', e)
|
48
|
-
raise ::Foreman::WrappedException.new(e, N_('Unable to update VMWare Snapshot'))
|
49
|
-
end
|
50
|
-
|
51
|
-
# Get Snapshot
|
52
|
-
#
|
53
|
-
# This methods returns a specific Snapshot for a given host.
|
54
|
-
def get_snapshot(server_id, snapshot_id)
|
55
|
-
snapshot = client.snapshots(server_id: server_id).get(snapshot_id)
|
56
|
-
# Workaround for https://github.com/fog/fog-vsphere/commit/d808255cd19c3d43d3227825f1e0d72d3f6ee6b9
|
57
|
-
# Remove, when fog-vshpere 1.11 lands in foreman
|
58
|
-
snapshot = snapshot.get_child(snapshot_id) while snapshot && snapshot.ref != snapshot_id
|
59
|
-
snapshot
|
60
|
-
end
|
61
|
-
|
62
|
-
# Get Snapshots
|
63
|
-
#
|
64
|
-
# This methods returns Snapshots from a given host.
|
65
|
-
def get_snapshots(server_id)
|
66
|
-
client.snapshots(server_id: server_id).all(recursive: true)
|
67
|
-
end
|
68
|
-
|
69
|
-
private
|
70
|
-
|
71
|
-
def task_successful?(task)
|
72
|
-
task['task_state'] == 'success' || task['state'] == 'success'
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# Add a Snapshots tab in the view of a host
|
2
|
-
Deface::Override.new(virtual_path: 'hosts/show',
|
3
|
-
name: 'add_host_snapshot_tab',
|
4
|
-
insert_bottom: 'ul',
|
5
|
-
partial: 'foreman_snapshot_management/hosts/snapshots_tab')
|
6
|
-
|
7
|
-
# Load content of Snapshots tab
|
8
|
-
Deface::Override.new(virtual_path: 'hosts/show',
|
9
|
-
name: 'add_host_snapshots_tab_content',
|
10
|
-
insert_bottom: 'div#myTabContent',
|
11
|
-
partial: 'foreman_snapshot_management/hosts/snapshots_tab_content')
|