Class: Floom::Master

Inherits:
Client show all
Defined in:
lib/floom/client/master.rb

Instance Attribute Summary

Attributes inherited from Client

#connection

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Client

#initialize, #reset_connection!, #to_s

Constructor Details

This class inherits a constructor from Floom::Client

Class Method Details

.thrift_classObject



4
# File 'lib/floom/client/master.rb', line 4

def self.thrift_class() FlumeMasterAdminServer::Client end

Instance Method Details

#configurationsObject



6
7
8
# File 'lib/floom/client/master.rb', line 6

def configurations
  connection.getConfigs.inject({}){ |hsh, (node, conf)| hsh[node] = Floom::Configuration.parse(conf) ; hsh }
end

#configure(spec = {}) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
# File 'lib/floom/client/master.rb', line 88

def configure(spec = {})
  spec.map do |logical_node, conf|
    params = case conf
             when Floom::Configuration  then conf.to_params
             when ThriftFlumeConfigData then Floom::Configuration.parse(conf).to_params
             when Hash                  then Floom::Configuration.create(conf).to_params
             when Array then conf
             end          
    perform_request(:config, logical_node.to_s, *params)
  end
end

#configured?(logical_node) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/floom/client/master.rb', line 30

def configured? logical_node
  configurations.keys.include? logical_node
end

#decommission(*logical_nodes) ⇒ Object



58
59
60
61
62
# File 'lib/floom/client/master.rb', line 58

def decommission(*logical_nodes)
  logical_nodes.map do |logical_node|
    perform_request(:decommission, logical_node)
  end      
end

#decommission_allObject



64
65
66
# File 'lib/floom/client/master.rb', line 64

def decommission_all
  decommission(*logical_nodes.select{ |node| mapped?(node) or configured?(node) })
end

#has_status?(logical_node) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/floom/client/master.rb', line 34

def has_status? logical_node
  statuses.keys.include? logical_node
end

#logical_nodesObject



18
19
20
# File 'lib/floom/client/master.rb', line 18

def logical_nodes
  (configurations.keys + mappings.values + statuses.keys).flatten.uniq
end

#map(physical_node, logical_node) ⇒ Object



43
44
45
# File 'lib/floom/client/master.rb', line 43

def map(physical_node, logical_node)
  perform_request(:map, physical_node, logical_node)
end

#mapped?(logical_node) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/floom/client/master.rb', line 26

def mapped? logical_node
  mappings.values.include? logical_node
end

#mappings(physical_node = nil) ⇒ Object



10
11
12
# File 'lib/floom/client/master.rb', line 10

def mappings(physical_node = nil)
  connection.getMappings(physical_node)
end

#perform_request(*params) ⇒ Object



38
39
40
41
# File 'lib/floom/client/master.rb', line 38

def perform_request(*params)
  req = Floom::Request.new(connection, *params).fetch
  req.parse
end

#physical_nodesObject



22
23
24
# File 'lib/floom/client/master.rb', line 22

def physical_nodes
  mappings.keys
end

#purge(*logical_nodes) ⇒ Object



68
69
70
71
72
# File 'lib/floom/client/master.rb', line 68

def purge(*logical_nodes)
  logical_nodes.map do |logical_node|
    perform_request(:purge, logical_node)
  end
end

#purge_allObject



74
75
76
# File 'lib/floom/client/master.rb', line 74

def purge_all
  purge(*logical_nodes.select{ |node| has_status? node })
end

#refresh(*logical_nodes) ⇒ Object



78
79
80
81
82
# File 'lib/floom/client/master.rb', line 78

def refresh(*logical_nodes)
  logical_nodes.map do |logical_node|
    perform_request(:refresh, logical_node)
  end      
end

#refresh_allObject



84
85
86
# File 'lib/floom/client/master.rb', line 84

def refresh_all
  refresh(*logical_nodes)
end

#statusesObject



14
15
16
# File 'lib/floom/client/master.rb', line 14

def statuses
  connection.getNodeStatuses.inject({}){ |hsh, (node, stat)| hsh[node] = Floom::Status.parse(stat) ; hsh }
end

#unconfigure(*logical_nodes) ⇒ Object



100
101
102
103
104
# File 'lib/floom/client/master.rb', line 100

def unconfigure(*logical_nodes)
  logical_nodes.map do |logical_node|
    perform_request(:unconfig, logical_node)
  end            
end

#unmap(*logical_nodes) ⇒ Object



47
48
49
50
51
52
# File 'lib/floom/client/master.rb', line 47

def unmap(*logical_nodes)
  logical_nodes.map do |logical_node|
    physical_node = mappings.detect(->{ mappings.keys }){ |name, nodes| nodes.include? logical_node }.first
    perform_request(:unmap, physical_node, logical_node)
  end
end

#unmap_allObject



54
55
56
# File 'lib/floom/client/master.rb', line 54

def unmap_all
  unmap(*logical_nodes.select{ |node| mapped? node })
end