Module: Riemann::Dash::BrowserConfig

Defined in:
lib/riemann/dash/browser_config.rb

Defined Under Namespace

Classes: File, S3

Class Method Summary collapse

Class Method Details

.backendObject



3
4
5
# File 'lib/riemann/dash/browser_config.rb', line 3

def self.backend
  @backend
end

.backend=(backend) ⇒ Object



7
8
9
# File 'lib/riemann/dash/browser_config.rb', line 7

def self.backend=(backend)
  @backend = backend
end

.index_by(keyfn, list) ⇒ Object

Given a function to extract a key from an element, and a list of elements, returns a map of keys to elements. Keys are assumed unique.



31
32
33
34
35
36
# File 'lib/riemann/dash/browser_config.rb', line 31

def self.index_by(keyfn, list)
  list.reduce({}) do |index, element|
    index[keyfn.call(element)] = element
    index
  end
end

.merge_configs(a, b) ⇒ Object

Merge two configs together



12
13
14
15
16
# File 'lib/riemann/dash/browser_config.rb', line 12

def self.merge_configs(a, b)
  a.merge 'server'      => (a['server']      or b['server']),
          'server_type' => (a['server_type'] or b['server_type']),
          'workspaces'  => merge_workspaces(a['workspaces'], b['workspaces'])
end

.merge_lists(keyfn, mergefn, as, bs) ⇒ Object

Merges two lists, given a key function which determines equivalent elements, and a merge function to combine equivalent elements.



40
41
42
43
44
45
46
# File 'lib/riemann/dash/browser_config.rb', line 40

def self.merge_lists(keyfn, mergefn, as, bs)
  asi = index_by keyfn, as
  bsi = index_by keyfn, bs
  ids = (as + bs).map(&keyfn).uniq.map do |key|
    mergefn.call asi[key], bsi[key]
  end
end

.merge_workspace(a, b) ⇒ Object

Merge two workspaces together



49
50
51
52
53
54
55
56
57
58
# File 'lib/riemann/dash/browser_config.rb', line 49

def self.merge_workspace(a, b)
  # TODO: workspace versions
  return a unless b
  return b unless a
  if (a['view']['version'] || 0) < (b['view']['version'] || 0)
    b
  else
    a
  end
end

.merge_workspaces(as, bs) ⇒ Object

Merge a list of workspaces together



61
62
63
64
65
66
67
68
69
# File 'lib/riemann/dash/browser_config.rb', line 61

def self.merge_workspaces(as, bs)
  return as unless bs
  return bs unless as

  merge_lists(lambda { |x| x['name'] },
              method(:merge_workspace),
              as,
              bs)
end

.readObject



18
19
20
# File 'lib/riemann/dash/browser_config.rb', line 18

def self.read
  backend.read
end

.update(update) ⇒ Object



22
23
24
# File 'lib/riemann/dash/browser_config.rb', line 22

def self.update(update)
  backend.update(update)
end