foreman_snapshot_management 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|