foreman_column_view 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c5fc7034b17fb5621127dcabd0b0a011637f4fa7
4
- data.tar.gz: d58f35cecb93132e6b95665076dc6d826044ef5a
3
+ metadata.gz: 942628959842bb592201db30bf188899ccf5c39d
4
+ data.tar.gz: d0efccf2714f26cc7d36e7e833893fb34d4e7f6e
5
5
  SHA512:
6
- metadata.gz: 2efaceb1767dcf5b76046820b3b058293069bc9b31cbdef8346091bef441344fba9270df95f7adafd2fc473fad63a4bc8eb1994e561f69615edf01eef492df42
7
- data.tar.gz: 9df1a938678999dc378eb6d439642af5128250dcda9ecf050ca0d88ec8e837f51eecf7f80d597f8fc1bdbc31f1e4ea4b67a384db7ebda289a326ff79598f665f
6
+ metadata.gz: 3d5c334da3404a7e3dbba931463d02d018ddfffa3cc015faf2200ce766dfe3aa241029d0abd6cf64d09c32a4a3717689c3c4129597d4a181856d499978a9f297
7
+ data.tar.gz: 839d22fe642884e4872ee6d73912897f14434478b5f45a3177fd9781895f003628b712c177603c311b64cbf81ded6f7899ece8cc4a1fced95120cb8d931aed32
data/README.md CHANGED
@@ -1,21 +1,21 @@
1
1
  # foreman\_column\_view
2
2
 
3
3
  A small plugin to showcase the awesome [Deface](https://github.com/spree/deface)
4
- library. It simply adds a column to the Hosts list. It also serves as a simple example
5
- of including a new Helper in the plugin.
4
+ library. It simply adds a column to the Hosts list or properties table. It also
5
+ serves as a simple example of including a new Helper in the plugin.
6
6
 
7
7
  # Installation
8
8
 
9
- Require the gem in Foreman, and also Deface, in `bundler.d/Gemfile.local.rb`:
9
+ Require the gem in Foreman (you may need extra dependencies such as libxml or libxslt
10
+ to build the nokogiri dependency)
10
11
 
11
12
  ```yaml
12
- gem 'deface', '0.7.2'
13
- gem 'foreman_column_view', :git => "https://github.com/GregSutcliffe/foreman_column_view.git"
13
+ gem 'foreman_column_view'
14
14
  ```
15
15
 
16
16
  Update Foreman with the new gems:
17
17
 
18
- bundle update
18
+ bundle update foreman_column_view
19
19
 
20
20
  # Configuration
21
21
 
@@ -50,6 +50,41 @@ as well:
50
50
  :content: facts_hash['uptime']
51
51
  ```
52
52
 
53
+ Additional rows can also be added to the Properties table on the host page by setting
54
+ `:view: hosts_properties`. The position is also controlled by `:after` using either a
55
+ numeric index to represent the row or the name of the previous row (however this will
56
+ not work well when the Foreman language is switched). An example configuration:
57
+
58
+ ```yaml
59
+ :uptime:
60
+ :title: Uptime
61
+ :after: 6
62
+ :content: facts_hash['uptime']
63
+ :view: :hosts_properties
64
+ ```
65
+
66
+ If you need to add information not readily available in a host, you can add information that
67
+ will be evaluated on runtime by adding `:eval_content: true` to your additional row.
68
+ Also, some times you do not want to show the additional row if a certain condition is not met,
69
+ in order to show that row conditionally, add `:conditional: :condition_symbol` to your configuration,
70
+ and that conditional will be executed on your host.
71
+
72
+ As an example, the following yaml shows a link to a custom URL if the method host.bmc_available? is true.
73
+
74
+ ```yaml
75
+ :console:
76
+ :title: Console
77
+ :after: 0
78
+ :content: link_to(_("Console"), "https://#{host.interfaces.first.name}.domainname", { :class => "btn btn-info" } )
79
+ :conditional: :bmc_available?
80
+ :eval_content: true
81
+ :view: :hosts_properties
82
+ ```
83
+
84
+ If your conditional method needs arguments to work, the arguments should go after the method name separated by
85
+ spaces, as in `:custom_method arg1 arg2`
86
+
87
+
53
88
  You will need to restart Foreman for changes to take effect, as the `settings.yaml` is
54
89
  only read at startup.
55
90
 
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ Jeweler::Tasks.new do |gem|
18
18
  gem.license = "GPL-3"
19
19
  gem.summary = %Q{Column View Plugin for Foreman }
20
20
  gem.description = %Q{Displays an additional column in the Foreman Hosts view}
21
- gem.email = "greg.sutclif@gmail.com"
21
+ gem.email = "greg.sutcliffe@gmail.com"
22
22
  gem.authors = ["Greg Sutcliffe"]
23
23
  # dependencies defined in Gemfile
24
24
  end
@@ -0,0 +1,40 @@
1
+ module ForemanColumnView
2
+ module HostsHelperExtension
3
+ def self.included(base)
4
+ base.send :alias_method_chain, :overview_fields, :fcv
5
+ end
6
+
7
+ # Extend core HostsHelper to add rows to Properties on hosts/show
8
+ def overview_fields_with_fcv host
9
+ fields = overview_fields_without_fcv(host)
10
+ valid_views = [:hosts_properties]
11
+
12
+ SETTINGS[:column_view].reject { |k,v| !valid_views.include?(v[:view]) }.keys.sort.map do |k|
13
+ after = SETTINGS[:column_view][k.to_sym][:after]
14
+ conditional = SETTINGS[:column_view][k.to_sym][:conditional]
15
+ if conditional.present?
16
+ method = conditional[0].to_sym
17
+ args = conditional.drop(1)
18
+ end
19
+
20
+ begin
21
+ next unless (conditional.present? && host.respond_to?(method) && host.send(method, *args)) ||
22
+ (conditional.nil?)
23
+ rescue ArgumentError
24
+ Rails.logger.warn("Foreman_column_view: Your are supplying the wrong kind/number of arguments to your conditional method. Host #{host} , method - #{method} - arguments - #{args.join(', ')} ")
25
+ next
26
+ end
27
+
28
+ # This won't work well with i18n, use row numbers instead
29
+ after = fields.find_index { |r| r[0].include? after } unless after.is_a? Fixnum
30
+ eval_content = SETTINGS[:column_view][k.to_sym][:eval_content]
31
+ content = eval_content ? eval(SETTINGS[:column_view][k.to_sym][:content]) :
32
+ fcv_content(host, k)
33
+
34
+ fields.insert(after || -1, [fcv_title(k), content])
35
+ end
36
+
37
+ fields
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  if SETTINGS[:column_view]
2
- SETTINGS[:column_view].keys.sort.map do |k|
2
+ SETTINGS[:column_view].reject { |k,v| v[:view] && v[:view] != 'hosts_list' }.keys.sort.map do |k|
3
3
  after = SETTINGS[:column_view][k.to_sym][:after]
4
4
  Deface::Override.new(
5
5
  :virtual_path => "hosts/_list",
@@ -1,5 +1,5 @@
1
1
  if SETTINGS[:column_view]
2
- SETTINGS[:column_view].keys.sort.map do |k|
2
+ SETTINGS[:column_view].reject { |k,v| v[:view] && v[:view] != 'hosts_list' }.keys.sort.map do |k|
3
3
  after = SETTINGS[:column_view][k.to_sym][:after]
4
4
  Deface::Override.new(
5
5
  :virtual_path => "hosts/_list",
@@ -1,5 +1,4 @@
1
+ require 'foreman_column_view/engine'
2
+
1
3
  module ForemanColumnView
2
- if defined?(Rails) && Rails::VERSION::MAJOR == 3
3
- require 'foreman_column_view/engine'
4
- end
5
4
  end
@@ -1,4 +1,6 @@
1
+ require 'deface'
1
2
  require 'foreman_column_view'
3
+ require 'deface'
2
4
 
3
5
  module ForemanColumnView
4
6
  #Inherit from the Rails module of the parent app (Foreman), not the plugin.
@@ -7,6 +9,9 @@ module ForemanColumnView
7
9
 
8
10
  initializer 'foreman_column_view.helper' do |app|
9
11
  ActionView::Base.send :include, ForemanColumnView::HostsHelper
12
+
13
+ # Extend core HostHelper to add rows to Properties on hosts/show
14
+ ::HostsHelper.send :include, ForemanColumnView::HostsHelperExtension
10
15
  end
11
16
 
12
17
  end
@@ -1,3 +1,3 @@
1
1
  module ForemanColumnView
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreman_column_view
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Sutcliffe
@@ -34,6 +34,7 @@ extra_rdoc_files:
34
34
  - LICENSE
35
35
  - README.md
36
36
  files:
37
+ - app/helpers/foreman_column_view/hosts_helper_extension.rb
37
38
  - app/helpers/foreman_column_view/hosts_helper.rb
38
39
  - app/overrides/add_column_title.rb
39
40
  - app/overrides/add_column_content.rb