Module: HybridPlatformsConductor::NodesHandler::ConfigDSLExtension

Defined in:
lib/hybrid_platforms_conductor/nodes_handler.rb

Overview

Extend the Config DSL

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#cmdb_mastersObject (readonly)

List of CMDB masters. Each info has the following properties:

  • nodes_selectors_stack (Array<Object>): Stack of nodes selectors impacted by this rule.

  • cmdb_masters (Hash< Symbol, Array<Symbol> >): List of metadata properties per CMDB name considered as master for those properties.

Array< Hash<Symbol, Object> >



19
20
21
# File 'lib/hybrid_platforms_conductor/nodes_handler.rb', line 19

def cmdb_masters
  @cmdb_masters
end

#sudo_procsObject (readonly)

List of sudo methods. Each info has the following properties:

  • nodes_selectors_stack (Array<Object>): Stack of nodes selectors impacted by this rule.

  • sudo_proc (Proc): Code giving the sudo line for a given user

    Parameters
    • user (String): User for which we want sudo

    Result
    • String: Corresponding sudo string

Array< Hash<Symbol, Object> >



29
30
31
# File 'lib/hybrid_platforms_conductor/nodes_handler.rb', line 29

def sudo_procs
  @sudo_procs
end

Instance Method Details

#init_nodes_handler_configObject

Mixin initializer



32
33
34
35
# File 'lib/hybrid_platforms_conductor/nodes_handler.rb', line 32

def init_nodes_handler_config
  @cmdb_masters = []
  @sudo_procs = []
end

#master_cmdbs(master_cmdbs_info) ⇒ Object

Set CMDB masters

Parameters
  • master_cmdbs_info (Hash< Symbol, Symbol or Array<Symbol> >): List of metadata properties (or single one) per CMDB name considered as master for those properties.



41
42
43
44
45
46
# File 'lib/hybrid_platforms_conductor/nodes_handler.rb', line 41

def master_cmdbs(master_cmdbs_info)
  @cmdb_masters << {
    cmdb_masters: Hash[master_cmdbs_info.map { |cmdb, properties| [cmdb, properties.is_a?(Array) ? properties : [properties]] }],
    nodes_selectors_stack: current_nodes_selectors_stack
  }
end

#sudo_for(&sudo_proc) ⇒ Object

Set a sudo proc

Parameters
  • sudo_proc (Proc): The sudo proc (see #sudo_procs doc to know the signature)



52
53
54
55
56
57
# File 'lib/hybrid_platforms_conductor/nodes_handler.rb', line 52

def sudo_for(&sudo_proc)
  @sudo_procs << {
    nodes_selectors_stack: current_nodes_selectors_stack,
    sudo_proc: sudo_proc
  }
end