Module: BlackStack::Deployer

Defined in:
lib/blackstack-deployer.rb

Overview

Deployer is a library that can be used to deploy a cluster of nodes.

Defined Under Namespace

Modules: CommandModule, DB, MatchModule, NoMatchModule, NodeModule, RoutineModule Classes: Command, Match, NoMatch, Node, Routine

Constant Summary collapse

@@logger =
BlackStack::BaseLogger.new(nil)
@@nodes =
[]
@@routines =
[]

Class Method Summary collapse

Class Method Details

.add_node(h) ⇒ Object

add a node to the list of nodes.



456
457
458
459
460
# File 'lib/blackstack-deployer.rb', line 456

def self.add_node(h)
  errors = BlackStack::Deployer::NodeModule.descriptor_errors(h)
  raise errors.join(".\n") unless errors.empty?
  @@nodes << BlackStack::Deployer::Node.new(h, @@logger)
end

.add_nodes(a) ⇒ Object

add an array of nodes to the list of nodes.



463
464
465
466
467
# File 'lib/blackstack-deployer.rb', line 463

def self.add_nodes(a)
  # validate: the parameter a is an array
  raise "The parameter a is not an array" unless a.is_a?(Array)
  a.each { |h| BlackStack::Deployer.add_node(h) }
end

.add_routine(h) ⇒ Object

add a routine to the list of routines.



477
478
479
480
481
# File 'lib/blackstack-deployer.rb', line 477

def self.add_routine(h)
  errors = BlackStack::Deployer::RoutineModule.descriptor_errors(h)
  raise errors.join(".\n") unless errors.empty?
  @@routines << BlackStack::Deployer::Routine.new(h)
end

.add_routines(a) ⇒ Object

add an array of routines to the list of routines.



484
485
486
487
488
# File 'lib/blackstack-deployer.rb', line 484

def self.add_routines(a)
  # validate: the parameter a is an array
  raise "The parameter a is not an array" unless a.is_a?(Array)
  a.each { |h| BlackStack::Deployer.add_routine(h) }
end

.deployObject

deploying all db-updates and run all routines on all nodes



667
668
669
670
671
672
673
674
675
# File 'lib/blackstack-deployer.rb', line 667

def self.deploy()
  tlogger = BlackStack::Deployer::logger

  @@nodes.each { |n|
    tlogger.logs "Node #{n.name}... "
    n.deploy()
    tlogger.done
  }
end

.loggerObject

get the logger assigned to the module



17
18
19
# File 'lib/blackstack-deployer.rb', line 17

def self.logger
  @@logger
end

.nodesObject

get the array of nodes assigned to the module



22
23
24
# File 'lib/blackstack-deployer.rb', line 22

def self.nodes
  @@nodes
end

.routinesObject

get the array of routines assigned to the module



27
28
29
# File 'lib/blackstack-deployer.rb', line 27

def self.routines
  @@routines
end

.run_routine(node_name, routine_name) ⇒ Object

running a routine on a node



498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
# File 'lib/blackstack-deployer.rb', line 498

def self.run_routine(node_name, routine_name)
  errors = []

  # find the node with the value node_name in the key :name
  n = @@nodes.select { |n| n.name == node_name }.first

  # find the routine with the value routine_name in the key :name
  r = @@routines.select { |r| r.name == routine_name }.first

  # validate: the node n exists
  errors << "Node #{node_name} not found" unless n

  # validate: the routine r exists
  errors << "Routine #{routine_name} not found" unless r

  # raise exception if any error has been found
  raise "The routine #{routine_name} cannot be run on the node #{node_name}: #{errors.uniq.join(".\n")}" if errors.length > 0
    
  # connect the node
  self.logger.logs "Connecting to node #{n.name}... "
  n.connect
  self.logger.done

  # run the routine
  self.logger.logs "Running routine #{r.name}... "
  r.run(n)
  self.logger.done
    
  # disconnect the node
  self.logger.logs "Disconnecting from node #{n.name}... "
  n.disconnect
  self.logger.done
    
end

.set_logger(i_logger) ⇒ Object

set the logger



12
13
14
# File 'lib/blackstack-deployer.rb', line 12

def self.set_logger(i_logger)
  @@logger = i_logger
end

.set_nodes(a) ⇒ Object

remove all exisiting nodes in he list of nodes. then, add the nodes in the parameter a to the list of nodes.



471
472
473
474
# File 'lib/blackstack-deployer.rb', line 471

def self.set_nodes(a)
  @@nodes.clear
  BlackStack::Deployer.add_nodes(a)
end

.set_routines(a) ⇒ Object

remove all exisiting routines in he list of routines. then, add the routines in the parameter a to the list of routines.



492
493
494
495
# File 'lib/blackstack-deployer.rb', line 492

def self.set_routines(a)
  @@routines.clear
  BlackStack::Deployer.add_routines(a)
end