Class: Docker_Rsync::SyncManager
- Inherits:
-
Object
- Object
- Docker_Rsync::SyncManager
- Includes:
- Thor::Shell
- Defined in:
- lib/docker_sync/sync_manager.rb
Instance Method Summary collapse
- #clean(sync_name = nil) ⇒ Object
- #create_sync(sync_name, sync_configuration) ⇒ Object
- #get_sync_points ⇒ Object
- #init_sync_processes(sync_name = nil) ⇒ Object
-
#initialize(options) ⇒ SyncManager
constructor
A new instance of SyncManager.
- #load_configuration ⇒ Object
- #run(sync_name = nil) ⇒ Object
- #stop ⇒ Object
- #sync(sync_name = nil) ⇒ Object
- #upgrade_syncs_config ⇒ Object
- #validate_config(config) ⇒ Object
- #validate_sync_config(name, sync_config) ⇒ Object
Constructor Details
#initialize(options) ⇒ SyncManager
Returns a new instance of SyncManager.
15 16 17 18 19 20 21 22 |
# File 'lib/docker_sync/sync_manager.rb', line 15 def initialize() @sync_processes = [] @config_syncs = [] = [] @config_syncs = [] @config_path = [:config_path] load_configuration end |
Instance Method Details
#clean(sync_name = nil) ⇒ Object
82 83 84 85 86 87 |
# File 'lib/docker_sync/sync_manager.rb', line 82 def clean(sync_name = nil) init_sync_processes(sync_name) @sync_processes.each { |sync_process| sync_process.clean } end |
#create_sync(sync_name, sync_configuration) ⇒ Object
126 127 128 129 |
# File 'lib/docker_sync/sync_manager.rb', line 126 def create_sync(sync_name, sync_configuration) sync_process = Docker_Sync::SyncProcess.new(sync_name, sync_configuration) return sync_process end |
#get_sync_points ⇒ Object
36 37 38 |
# File 'lib/docker_sync/sync_manager.rb', line 36 def get_sync_points return @config_syncs end |
#init_sync_processes(sync_name = nil) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/docker_sync/sync_manager.rb', line 68 def init_sync_processes(sync_name = nil) if sync_name.nil? @config_syncs.each { |name,sync_configuration| @sync_processes.push(create_sync(name, sync_configuration)) } else unless @config_syncs.key?(sync_name) raise("Could not find sync configuration with name #{sync_name}") end @sync_processes.push(create_sync(sync_name, @config_syncs[sync_name])) end end |
#load_configuration ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/docker_sync/sync_manager.rb', line 24 def load_configuration unless File.exist?(@config_path) raise "Config could not be loaded from #{@config_path} - it does not exist" end config = YAML.load_file(@config_path) validate_config(config) = config['options'] || {} @config_syncs = config['syncs'] upgrade_syncs_config end |
#run(sync_name = nil) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/docker_sync/sync_manager.rb', line 96 def run(sync_name = nil) init_sync_processes(sync_name) @sync_processes.each { |sync_process| sync_process.run } begin @sync_processes.each do |sync_process| sync_process.watch_thread.join end rescue SystemExit, Interrupt puts "Shutting down..." @sync_processes.each do |sync_process| sync_process.stop end @sync_processes.each do |sync_process| sync_process.watch_thread.kill end rescue Exception => e puts "EXCEPTION: #{e.inspect}" puts "MESSAGE: #{e.message}" end end |
#stop ⇒ Object
131 132 133 |
# File 'lib/docker_sync/sync_manager.rb', line 131 def stop end |
#sync(sync_name = nil) ⇒ Object
89 90 91 92 93 94 |
# File 'lib/docker_sync/sync_manager.rb', line 89 def sync(sync_name = nil) init_sync_processes(sync_name) @sync_processes.each { |sync_process| sync_process.sync } end |
#upgrade_syncs_config ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/docker_sync/sync_manager.rb', line 40 def upgrade_syncs_config @config_syncs.each do |name, config| @config_syncs[name]['config_path'] = @config_path @config_syncs[name]['src'] = File.(@config_syncs[name]['src']) unless config.key?('verbose') @config_syncs[name]['verbose'] = ['verbose'] || false end end end |
#validate_config(config) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/docker_sync/sync_manager.rb', line 50 def validate_config(config) unless config.key?('syncs') raise ('no syncs defined') end config['syncs'].each do |name, sync_config| validate_sync_config(name, sync_config) end return true end |
#validate_sync_config(name, sync_config) ⇒ Object
62 63 64 65 66 |
# File 'lib/docker_sync/sync_manager.rb', line 62 def validate_sync_config(name, sync_config) %w[src dest sync_host_port].each do |key| raise ("#{name} does not have #{key} condiguration value set - this is mandatory") unless sync_config.key?(key) end end |