foreman_osc 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a1fd4ee0ad6e771d6817e4f4965a47fa9bcc7cd
4
- data.tar.gz: 8397fd5287cd42b13050c69b75d787f2d08c6dbb
3
+ metadata.gz: 78500a3fb33cf8393b20a90d8f398402243bc1d2
4
+ data.tar.gz: faf9f9f026132d39f520a63441e98baebf0adea4
5
5
  SHA512:
6
- metadata.gz: 9765ebe00ac83fdb93e8ffaa789f6e5dbb5cad666504fb3d773820216f8ab96e2b530ea644ea48ccc89fd73ec7ecaf01b01b646f7e5655031225a96e1e45ee72
7
- data.tar.gz: b447dc08418086c8a90d48e6de8b550b8359c42925332d2911fedfd65fe0f3ae79c780b1c859df50b3f38902945dd43193dd4e261648d25d7020579806feedbf
6
+ metadata.gz: 84bd79796497db336a81fe2f716077697e45e5ec348ec5bc72279d613f0a00abb969493a3fea988db68f5c852ee8774445db01d7e57ebaea1d564f1fdf21ea58
7
+ data.tar.gz: 0d742af97b67b241bb37b0318327fa7634286fa1e4b0fb7c85668f0e492aee08014b7801b0450abb26cc332270ebf8ac72b485c36e28a8a1ddda1d65803e0f43
@@ -0,0 +1,55 @@
1
+ module ForemanOsc
2
+ module ParameterExtensions
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ after_update :sync_tftp, if: :tftp_parameter_updated?
7
+ after_create :sync_tftp, if: :tftp_parameter_created?
8
+ end
9
+
10
+ def tftp_parameters
11
+ [
12
+ 'nfsroot_host',
13
+ 'nfsroot_path',
14
+ 'nfsroot_opts',
15
+ 'nfsroot_kernel_version',
16
+ 'nfsroot_kernel',
17
+ 'nfsroot_initrd',
18
+ ]
19
+ end
20
+
21
+ def sync_tftp
22
+ if self.class.name == 'GroupParameter'
23
+ hosts = self.hostgroup.hosts
24
+ if hosts.empty?
25
+ hosts = Host::Managed.authorized.where(hostgroup: self.hostgroup.child_ids)
26
+ end
27
+ elsif self.class.name == 'HostParameter'
28
+ hosts = [self.host]
29
+ else
30
+ Foreman::Logging.logger('foreman_osc/tftp_sync').error("Don't know how to handle #{self.class.name}")
31
+ end
32
+
33
+ hosts.each do |host|
34
+ Foreman::Logging.logger('foreman_osc/tftp_sync').info(host.name)
35
+ end
36
+ end
37
+
38
+ def tftp_parameter_updated?
39
+ if self.tftp_parameters.include?(self.name) && self.value_changed?
40
+ return true
41
+ else
42
+ return false
43
+ end
44
+ end
45
+
46
+ def tftp_parameter_created?
47
+ if self.tftp_parameters.include?(self.name)
48
+ return true
49
+ else
50
+ return false
51
+ end
52
+ end
53
+
54
+ end
55
+ end
@@ -2,10 +2,15 @@ require 'deface'
2
2
 
3
3
  module ForemanOsc
4
4
  class Engine < ::Rails::Engine
5
+ engine_name 'foreman_osc'
6
+
7
+ config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
5
8
 
6
9
  initializer 'foreman_osc.register_plugin', :before => :finisher_hook do |_app|
7
10
  Foreman::Plugin.register :foreman_osc do
8
11
  requires_foreman '>= 1.11'
12
+
13
+ logger :tftp_sync, :enabled => true
9
14
  end
10
15
  end
11
16
 
@@ -13,5 +18,13 @@ module ForemanOsc
13
18
  load 'osc.rake'
14
19
  end
15
20
 
21
+ config.to_prepare do
22
+ begin
23
+ Parameter.send(:include, ForemanOsc::ParameterExtensions)
24
+ rescue => e
25
+ Rails.logger.warn "ForemanOsc: skipping engine hook (#{e})"
26
+ end
27
+ end
28
+
16
29
  end
17
30
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanOsc
2
- VERSION = '0.0.2'.freeze
2
+ VERSION = '0.1.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_osc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trey Dockendorf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-04 00:00:00.000000000 Z
11
+ date: 2016-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: deface
@@ -59,6 +59,7 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
+ - app/models/concerns/foreman_osc/parameter_extensions.rb
62
63
  - lib/osc.rake
63
64
  - lib/tasks/foreman_osc_tasks.rake
64
65
  - lib/foreman_osc/engine.rb