Module: Roles

Included in:
ClusterBomb::Bomb
Defined in:
lib/cluster_bomb/roles.rb

Instance Method Summary collapse

Instance Method Details

#clear_role(name) ⇒ Object

Clear out role



17
18
19
20
# File 'lib/cluster_bomb/roles.rb', line 17

def clear_role(name)
  rl = @roles[name.to_sym]
  @roles[name.to_sym] =[] if rl
end

#role(*args, &task) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/cluster_bomb/roles.rb', line 2

def role(*args, &task)
  if args.length==2
    name=args[0]
    servers=args[1]
    ra=servers.split(',')       
  elsif args.length==1 && task != nil
    name=args[0]
    ra = yield(task)
  else
    raise "role command takes a role name and a list of hosts OR a block yielding a list of hosts"
  end    
  set_role(name, ra)
end

#servers(role_list) ⇒ Object

produce a list of servers from role list empty or nil role list implies all roles



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/cluster_bomb/roles.rb', line 24

def servers(role_list)
  @roles ||={}
  ra=[]
  if role_list && !role_list.empty?
    if role_list.class==String
      ra = role_list.split(',').collect{|r| r.to_sym}
    else
      ra=role_list
    end
  end
  server_list=[]
  ra.each do |role|
    raise "Role #{role} not found" unless @roles[role]
    server_list += @roles[role]
  end
  server_list
end

#valid_role?(name) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/cluster_bomb/roles.rb', line 42

def valid_role?(name)
  @roles[name.to_sym]
end