foreman_snapshot_management 1.2.0 → 1.3.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 +2 -0
- data/app/controllers/foreman_snapshot_management/snapshots_controller.rb +1 -14
- data/app/models/foreman_snapshot_management/vmware_extensions.rb +7 -1
- data/app/views/foreman_snapshot_management/hosts/_snapshots_tab.html.erb +1 -1
- data/app/views/foreman_snapshot_management/hosts/_snapshots_tab_content.html.erb +1 -1
- data/app/views/foreman_snapshot_management/snapshots/_index.html.erb +5 -5
- data/config/routes.rb +1 -1
- data/lib/foreman_snapshot_management/version.rb +1 -1
- data/test/controllers/api/v2/snapshots_test.rb +2 -2
- data/test/controllers/foreman_snapshot_management/snapshots_controller_test.rb +2 -2
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92825bf181cfd185b7005b4ae8484a45fb76be22
|
4
|
+
data.tar.gz: 69df917d45d4c2fee44194a275aad9b3a93b0484
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c6fe6bf1cd7b925a20bdd929e519901d193fecbf5817736c4056ffebe2f35bf8c293d313b820cf134bedf8489ccebf1ebd94ba30ff852f62e3ea7b0b9bfbf40
|
7
|
+
data.tar.gz: a24566a0193ce31c7dc8060cee2d82a6c2ca82a232cdd813d7c7595d2211d378768511093e1084f88e5f7040283ace1cf63b37f49f76febe466c156ed1863c41
|
data/README.md
CHANGED
@@ -79,26 +79,13 @@ module ForemanSnapshotManagement
|
|
79
79
|
not_found
|
80
80
|
return false
|
81
81
|
end
|
82
|
-
@host = Host.authorized(
|
82
|
+
@host = Host.authorized("#{action_permission}_snapshots".to_sym, Host).friendly.find(host_id)
|
83
83
|
unless @host
|
84
84
|
not_found
|
85
85
|
return(false)
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
-
def host_permission
|
90
|
-
case action_permission.to_s
|
91
|
-
when 'create', 'destroy'
|
92
|
-
'edit'
|
93
|
-
when 'edit', 'view'
|
94
|
-
'view'
|
95
|
-
when 'revert'
|
96
|
-
'revert'
|
97
|
-
else
|
98
|
-
raise ::Foreman::Exception.new(N_('unknown host permission for %s'), "#{params[:controller]}##{action_permission}")
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
89
|
def action_permission
|
103
90
|
case params[:action]
|
104
91
|
when 'revert'
|
@@ -53,7 +53,13 @@ module ForemanSnapshotManagement
|
|
53
53
|
#
|
54
54
|
# This methods returns a specific Snapshot for a given host.
|
55
55
|
def get_snapshot(server_id, snapshot_id)
|
56
|
-
client.snapshots(server_id: server_id).get(snapshot_id)
|
56
|
+
snapshot = client.snapshots(server_id: server_id).get(snapshot_id)
|
57
|
+
# Workaround for https://github.com/fog/fog-vsphere/commit/d808255cd19c3d43d3227825f1e0d72d3f6ee6b9
|
58
|
+
# Remove, when fog-vshpere 1.11 lands in foreman
|
59
|
+
while snapshot && snapshot.ref != snapshot_id
|
60
|
+
snapshot = snapshot.get_child(snapshot_id)
|
61
|
+
end
|
62
|
+
snapshot
|
57
63
|
end
|
58
64
|
|
59
65
|
# Get Snapshots
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<% if @host.compute_resource && @host.compute_resource.capabilities.include?(:snapshots) && authorized_for(:
|
1
|
+
<% if @host.compute_resource && @host.compute_resource.capabilities.include?(:snapshots) && authorized_for(:auth_object => @host, :permission => :view_snapshots) %>
|
2
2
|
<li><a href='#snapshots' data-toggle='tab'><%= _('Snapshots') %></a></li>
|
3
3
|
<% end %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% if @host.compute_resource && @host.compute_resource.capabilities.include?(:snapshots) && authorized_for(:
|
1
|
+
<% if @host.compute_resource && @host.compute_resource.capabilities.include?(:snapshots) && authorized_for(:auth_object => @host, :permission => :view_snapshots) %>
|
2
2
|
<div id='snapshots' class='tab-pane'
|
3
3
|
data-ajax-url='<%= host_snapshots_path(host_id: @host)%>'
|
4
4
|
data-on-complete='onContentLoad'>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
</tr>
|
9
9
|
</thead>
|
10
10
|
<tbody>
|
11
|
-
<% if authorized_for(:
|
11
|
+
<% if authorized_for(:auth_object => @host, :permission => :create_snapshots) %>
|
12
12
|
<tr>
|
13
13
|
<td>
|
14
14
|
<%= f.text_field :name, class: 'form-control' %>
|
@@ -24,7 +24,7 @@
|
|
24
24
|
<% @snapshots.each do |snapshot| %>
|
25
25
|
<tr>
|
26
26
|
<td>
|
27
|
-
<% if authorized_for(:
|
27
|
+
<% if authorized_for(:auth_object => @host, :permission => :edit_snapshots) %>
|
28
28
|
<%= edit_textfield snapshot, :name %>
|
29
29
|
<% else %>
|
30
30
|
<%= snapshot.name %>
|
@@ -32,7 +32,7 @@
|
|
32
32
|
<br /><%= snapshot.formatted_create_time() %>
|
33
33
|
</td>
|
34
34
|
<td>
|
35
|
-
<% if authorized_for(:
|
35
|
+
<% if authorized_for(:auth_object => @host, :permission => :edit_snapshots) %>
|
36
36
|
<%= edit_textarea snapshot, :description %>
|
37
37
|
<% else %>
|
38
38
|
<%= snapshot.description %>
|
@@ -40,8 +40,8 @@
|
|
40
40
|
</td>
|
41
41
|
<td>
|
42
42
|
<%= action_buttons(
|
43
|
-
display_link_if_authorized(_('Rollback'), hash_for_revert_host_snapshot_path(host_id: @host, id: snapshot.id), method: :put, class: 'btn btn-primary', data: {confirm: _("Are you sure to revert this Snapshot?")}),
|
44
|
-
display_delete_if_authorized(hash_for_host_snapshot_path(host_id: @host, id: snapshot.id), data: {confirm: _("Are you sure to delete this Snapshot?")}),
|
43
|
+
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?")}),
|
44
|
+
display_delete_if_authorized(hash_for_host_snapshot_path(host_id: @host, id: snapshot.id).merge(:auth_object => @host, :permission => :delete_snapshots), data: {confirm: _("Are you sure to delete this Snapshot?")}),
|
45
45
|
) %>
|
46
46
|
</td>
|
47
47
|
</tr>
|
data/config/routes.rb
CHANGED
@@ -18,7 +18,7 @@ Rails.application.routes.draw do
|
|
18
18
|
|
19
19
|
constraints(host_id: %r{[^\/]+}) do
|
20
20
|
resources :hosts, only: [] do
|
21
|
-
resources :snapshots, module: 'foreman_snapshot_management' do
|
21
|
+
resources :snapshots, module: 'foreman_snapshot_management', only: [:index, :create, :destroy, :update] do
|
22
22
|
member do
|
23
23
|
put :revert
|
24
24
|
end
|
@@ -2,11 +2,11 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class Api::V2::SnapshotsControllerTest < ActionController::TestCase
|
4
4
|
let(:compute_resource) do
|
5
|
-
cr =
|
5
|
+
cr = FactoryBot.create(:compute_resource, :vmware, :uuid => 'Solutions')
|
6
6
|
ComputeResource.find_by_id(cr.id)
|
7
7
|
end
|
8
8
|
let(:uuid) { '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
|
9
|
-
let(:host) {
|
9
|
+
let(:host) { FactoryBot.create(:host, :managed, :compute_resource => compute_resource, :uuid => uuid) }
|
10
10
|
let(:snapshot_id) { 'snapshot-0101' }
|
11
11
|
setup { ::Fog.mock! }
|
12
12
|
teardown { ::Fog.unmock! }
|
@@ -3,11 +3,11 @@ require 'test_helper'
|
|
3
3
|
module ForemanSnapshotManagement
|
4
4
|
class SnapshotsControllerTest < ActionController::TestCase
|
5
5
|
let(:compute_resource) do
|
6
|
-
cr =
|
6
|
+
cr = FactoryBot.create(:compute_resource, :vmware, :uuid => 'Solutions')
|
7
7
|
ComputeResource.find_by_id(cr.id)
|
8
8
|
end
|
9
9
|
let(:uuid) { '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
|
10
|
-
let(:host) {
|
10
|
+
let(:host) { FactoryBot.create(:host, :managed, :compute_resource => compute_resource, :uuid => uuid) }
|
11
11
|
let(:snapshot_id) { 'snapshot-0101' }
|
12
12
|
setup { ::Fog.mock! }
|
13
13
|
teardown { ::Fog.unmock! }
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_snapshot_management
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ATIX AG
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-15 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'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rubocop
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|