foreman_hooks 0.3.14 → 0.3.15
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 +6 -0
- data/lib/foreman_hooks/callback_hooks.rb +5 -1
- data/lib/foreman_hooks/util.rb +9 -1
- data/lib/tasks/hooks.rake +8 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87442c737ac9a7e0a5dfa830a53ebbce69121da6
|
4
|
+
data.tar.gz: 9b455bf7f174ade8aa225cc961068f0e4fde84a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27d082d0c28f8406a081b5b6be1be72aad4b5f74d7790735c2a12d2a32984da91a438f6face9676cd472a720eef639755f35fe7fd7c13a1a955c0da96f18f851
|
7
|
+
data.tar.gz: 7f861b52fb1dc7ae207fc4d3218afee8c6d01c5e423d9a2ad36a1ea1a93dde521963faace55cb494adbc52b4138ef7c5d305becb7ad38216ddd35a9337340098
|
data/README.md
CHANGED
@@ -131,6 +131,12 @@ may want to ensure stdin is closed to prevent pipe buffer from filling.
|
|
131
131
|
| ~foreman/config/hooks/host/managed/create/50_register_system.sh \
|
132
132
|
create foo.example.com
|
133
133
|
|
134
|
+
Some arguments are available as environment variables:
|
135
|
+
|
136
|
+
Variable | Description
|
137
|
+
-------- | -----------
|
138
|
+
FOREMAN_HOOKS_USER | Username of Foreman user
|
139
|
+
|
134
140
|
Every hook within the event directory is executed in alphabetical order. For
|
135
141
|
orchestration hooks, an integer prefix in the hook filename will be used as
|
136
142
|
the priority value, so influences where it's done in relation to DNS, DHCP, VM
|
@@ -10,7 +10,11 @@ module ForemanHooks::CallbackHooks
|
|
10
10
|
next unless name
|
11
11
|
|
12
12
|
Rails.logger.debug("Created hook method #{event} on #{self}")
|
13
|
-
|
13
|
+
if "#{event}" == "before_destroy"
|
14
|
+
set_callback name.to_sym, filter.to_sym, "#{event}_hooks".to_sym, prepend: true
|
15
|
+
else
|
16
|
+
set_callback name.to_sym, filter.to_sym, "#{event}_hooks".to_sym
|
17
|
+
end
|
14
18
|
define_method("#{event}_hooks") do
|
15
19
|
Rails.logger.debug "Observed #{event} hook on #{self}"
|
16
20
|
return unless hooks = ForemanHooks.find_hooks(self.class, event)
|
data/lib/foreman_hooks/util.rb
CHANGED
@@ -16,11 +16,15 @@ module ForemanHooks::Util
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
def rabl_path
|
20
|
+
"api/v2/#{render_hook_type.tableize}/show"
|
21
|
+
end
|
22
|
+
|
19
23
|
def render_hook_json
|
20
24
|
# APIv2 has some pretty good templates. We could extend them later in special cases.
|
21
25
|
# Wrap them in a root node for pre-1.4 compatibility
|
22
26
|
view_path = ActionController::Base.view_paths.collect(&:to_path)
|
23
|
-
json = Rabl.render(self,
|
27
|
+
json = Rabl.render(self, rabl_path,
|
24
28
|
view_path: view_path, format: :json, scope: RablScope.new)
|
25
29
|
%Q|{"#{render_hook_type}":#{json}}|
|
26
30
|
rescue => e
|
@@ -47,6 +51,10 @@ module ForemanHooks::Util
|
|
47
51
|
end
|
48
52
|
|
49
53
|
def exec_hook_int(stdin_data, *args)
|
54
|
+
# Set environment vars available in hook scripts
|
55
|
+
# Name of active Foreman user:
|
56
|
+
ENV['FOREMAN_HOOKS_USER'] = User.current.login
|
57
|
+
|
50
58
|
args.map!(&:to_s)
|
51
59
|
output, status = if Open3.respond_to? :capture2e
|
52
60
|
Open3.capture2e(*args.push(:stdin_data => stdin_data))
|
data/lib/tasks/hooks.rake
CHANGED
@@ -2,7 +2,14 @@ namespace :hooks do
|
|
2
2
|
desc 'Print a list of object names that can be hooked'
|
3
3
|
task :objects => :environment do
|
4
4
|
Rails.application.config.eager_load_namespaces.each(&:eager_load!)
|
5
|
-
|
5
|
+
|
6
|
+
# Gather the models
|
7
|
+
models = ActiveRecord::Base.descendants.collect(&:name).collect(&:underscore)
|
8
|
+
|
9
|
+
# filter out known models not hookable
|
10
|
+
models.reject! {|e| e.start_with?('habtm')}
|
11
|
+
|
12
|
+
puts models.sort
|
6
13
|
end
|
7
14
|
|
8
15
|
desc 'Print a list of event names for a given object, e.g. hooks:events[host/managed]'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_hooks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominic Cleal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Plugin engine for Foreman that enables running custom hook scripts on
|
14
14
|
Foreman events
|
@@ -38,7 +38,7 @@ files:
|
|
38
38
|
- lib/tasks/hooks.rake
|
39
39
|
- test/test_helper.rb
|
40
40
|
- test/unit/host_observer_test.rb
|
41
|
-
homepage:
|
41
|
+
homepage: https://github.com/theforeman/foreman_hooks
|
42
42
|
licenses:
|
43
43
|
- GPL-3.0
|
44
44
|
metadata: {}
|
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
58
|
version: '0'
|
59
59
|
requirements: []
|
60
60
|
rubyforge_project:
|
61
|
-
rubygems_version: 2.6.
|
61
|
+
rubygems_version: 2.6.14.1
|
62
62
|
signing_key:
|
63
63
|
specification_version: 4
|
64
64
|
summary: Run custom hook scripts on Foreman events
|