Class: Etcdist::Writer

Inherits:
Object
  • Object
show all
Defined in:
lib/etcdist/writer.rb

Overview

Writes data into etcd.

Instance Method Summary collapse

Constructor Details

#initialize(etcd, opts = {}) ⇒ Writer

Returns a new instance of Writer.

Parameters:

  • opts (Hash) (defaults to: {})

    Options



9
10
11
12
13
# File 'lib/etcdist/writer.rb', line 9

def initialize(etcd, opts = {})
  @etcd = etcd
  @dangerous = opts[:dangerous] || false
  @dry_run = opts[:dry_run] || false
end

Instance Method Details

#delete_absent_directories(all_dirs) ⇒ Object

Deletes any directories that are present in etcd but not on the file system



28
29
30
31
32
33
34
35
36
# File 'lib/etcdist/writer.rb', line 28

def delete_absent_directories(all_dirs)
  dirs_to_delete = all_etcd_dirs('/').sort.reverse - all_dirs
  dirs_to_delete.each do |dir|
    Log.debug("deleting directory #{dir}") if @dangerous
    @etcd.delete(dir, recursive: true) if @dangerous && !@dry_run
  end

  Log.info("#{dirs_to_delete.length} directories deleted.") if @dangerous
end

#write(data) ⇒ Object

Writes data into etcd and optionally removes extra data from etcd

Parameters:

  • data (Hash)

    of type { directory => { key => val } }



17
18
19
20
21
22
23
24
25
# File 'lib/etcdist/writer.rb', line 17

def write(data)
  count = { put: 0, del: 0 }
  data.each do |dir, entries|
    count[:put] += put(dir, entries)
    count[:del] += delete(dir, entries) if @dangerous
  end

  Log.info("#{count[:put]} entries added/modified. #{count[:del]} entries deleted.")
end