eventhub-command 0.3.11 → 0.3.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,85 +1,85 @@
1
- class Deployer::MuleDeployer < Deployer::BaseDeployer
2
- attr_reader :adapter_names
3
-
4
- def initialize(adapter_names, options)
5
- super(options)
6
- @adapter_names = adapter_names
7
- end
8
-
9
- def adapter_cached_copy(adapter_name)
10
- cached_copy_dir('mule', "#{adapter_name}.zip")
11
- end
12
-
13
- def config_source_dir(adapter_name)
14
- super('mule', adapter_name)
15
- end
16
-
17
- def deploy!
18
- puts "deploying to #{stage.name} via #{deploy_via}".light_blue.on_blue
19
-
20
- Deployer::Executor.new(stage, verbose: verbose?) do |executor|
21
- create_base_dirs(executor)
22
-
23
- # update
24
- update_cached_copy(executor)
25
-
26
- adapter_names_to_deploy = resolve_adapter_names(executor, options)
27
-
28
- adapter_names_to_deploy.each do |adapter_name|
29
- puts
30
- puts "Deploying #{adapter_name}".light_blue.on_blue
31
- log_deployment(executor, "Deploying #{adapter_name} via #{deploy_via} from #{cached_copy_dir}")
32
- # make a copy of the zip files to merge them with config
33
- cached_copy_source = adapter_cached_copy(adapter_name)
34
- configuration_target = File.join(base_dir, 'mule', "#{adapter_name}.zip")
35
- executor.execute("cp #{cached_copy_source} #{configuration_target}")
36
-
37
- # copy config
38
- config_source = config_source_dir(adapter_name)
39
- executor.execute("if [[ -d #{config_source} ]] ; then cd #{config_source} ; zip -r #{configuration_target} . ; fi")
40
-
41
- # deploy
42
- executor.execute("cp #{configuration_target} $MULE_HOME/apps")
43
- end
44
- end
45
- end
46
-
47
-
48
- private
49
-
50
- def resolve_adapter_names(executor, options)
51
- available = remote_ls(executor, options, cached_copy_dir('mule', '*.zip')).map do |name|
52
- File.basename(name, '.zip')
53
- end
54
-
55
- fetched = Array(adapter_names).map do |name|
56
- if name.include?('*') # resolve pattern on remote machine
57
- remote_ls(executor, options, cached_copy_dir('mule', "#{name}.zip"))
58
- else
59
- name
60
- end
61
- end
62
- if fetched.empty? # then fetch all
63
- fetched = available
64
- end
65
-
66
- fetched = fetched.flatten.map do |name|
67
- File.basename(name, '.zip')
68
- end
69
-
70
- verify_deployment_list!(fetched, available)
71
-
72
- fetched
73
- end
74
-
75
- def update_cached_copy(executor)
76
- if via_scp?
77
- source = Eh::Settings.current.releases_dir('mule', '*.zip')
78
- target_dir = cached_copy_dir('mule')
79
- executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
80
- executor.upload(source, target_dir)
81
- else
82
- update_scm(executor)
83
- end
84
- end
85
- end
1
+ class Deployer::MuleDeployer < Deployer::BaseDeployer
2
+ attr_reader :adapter_names
3
+
4
+ def initialize(adapter_names, options)
5
+ super(options)
6
+ @adapter_names = adapter_names
7
+ end
8
+
9
+ def adapter_cached_copy(adapter_name)
10
+ cached_copy_dir('mule', "#{adapter_name}.zip")
11
+ end
12
+
13
+ def config_source_dir(adapter_name)
14
+ super('mule', adapter_name)
15
+ end
16
+
17
+ def deploy!
18
+ puts "deploying to #{stage.name} via #{deploy_via}".light_blue.on_blue
19
+
20
+ Deployer::Executor.new(stage, verbose: verbose?) do |executor|
21
+ create_base_dirs(executor)
22
+
23
+ # update
24
+ update_cached_copy(executor)
25
+
26
+ adapter_names_to_deploy = resolve_adapter_names(executor, options)
27
+
28
+ adapter_names_to_deploy.each do |adapter_name|
29
+ puts
30
+ puts "Deploying #{adapter_name}".light_blue.on_blue
31
+ log_deployment(executor, "Deploying #{adapter_name} via #{deploy_via} from #{cached_copy_dir}")
32
+ # make a copy of the zip files to merge them with config
33
+ cached_copy_source = adapter_cached_copy(adapter_name)
34
+ configuration_target = File.join(base_dir, 'mule', "#{adapter_name}.zip")
35
+ executor.execute("cp #{cached_copy_source} #{configuration_target}")
36
+
37
+ # copy config
38
+ config_source = config_source_dir(adapter_name)
39
+ executor.execute("if [[ -d #{config_source} ]] ; then cd #{config_source} ; zip -r #{configuration_target} . ; fi")
40
+
41
+ # deploy
42
+ executor.execute("cp #{configuration_target} $MULE_HOME/apps")
43
+ end
44
+ end
45
+ end
46
+
47
+
48
+ private
49
+
50
+ def resolve_adapter_names(executor, options)
51
+ available = remote_ls(executor, options, cached_copy_dir('mule', '*.zip')).map do |name|
52
+ File.basename(name, '.zip')
53
+ end
54
+
55
+ fetched = Array(adapter_names).map do |name|
56
+ if name.include?('*') # resolve pattern on remote machine
57
+ remote_ls(executor, options, cached_copy_dir('mule', "#{name}.zip"))
58
+ else
59
+ name
60
+ end
61
+ end
62
+ if fetched.empty? # then fetch all
63
+ fetched = available
64
+ end
65
+
66
+ fetched = fetched.flatten.map do |name|
67
+ File.basename(name, '.zip')
68
+ end
69
+
70
+ verify_deployment_list!(fetched, available)
71
+
72
+ fetched
73
+ end
74
+
75
+ def update_cached_copy(executor)
76
+ if via_scp?
77
+ source = Eh::Settings.current.releases_dir('mule', '*.zip')
78
+ target_dir = cached_copy_dir('mule')
79
+ executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
80
+ executor.upload(source, target_dir)
81
+ else
82
+ update_scm(executor)
83
+ end
84
+ end
85
+ end
@@ -1,45 +1,45 @@
1
- class Net::SSH::Connection::Session
2
-
3
- def exec_sc!(command, verbose = false)
4
- stdout_data,stderr_data = "",""
5
- exit_code, exit_signal = nil,nil
6
- self.open_channel do |channel|
7
- channel.exec(command) do |_, success|
8
- raise "Command \"#{command}\" was unable to execute" unless success
9
-
10
- channel.on_data do |_, data|
11
- if verbose
12
- puts
13
- puts data.light_blue.on_white if verbose
14
- end
15
- stdout_data += data
16
- end
17
-
18
- channel.on_extended_data do |_, _, data|
19
- if verbose
20
- puts
21
- puts data.light_blue.on_white if verbose
22
- end
23
- stderr_data += data
24
- end
25
-
26
- channel.on_request("exit-status") do |_, data|
27
- exit_code = data.read_long
28
- end
29
-
30
- channel.on_request("exit-signal") do |_, data|
31
- exit_signal = data.read_long
32
- end
33
- end
34
- end
35
- self.loop
36
- raise stderr_data unless exit_code == 0
37
-
38
- {
39
- stdout: stdout_data,
40
- stderr: stderr_data,
41
- exit_code: exit_code,
42
- exit_signal: exit_signal
43
- }
44
- end
45
- end
1
+ class Net::SSH::Connection::Session
2
+
3
+ def exec_sc!(command, verbose = false)
4
+ stdout_data,stderr_data = "",""
5
+ exit_code, exit_signal = nil,nil
6
+ self.open_channel do |channel|
7
+ channel.exec(command) do |_, success|
8
+ raise "Command \"#{command}\" was unable to execute" unless success
9
+
10
+ channel.on_data do |_, data|
11
+ if verbose
12
+ puts
13
+ puts data.light_blue.on_white if verbose
14
+ end
15
+ stdout_data += data
16
+ end
17
+
18
+ channel.on_extended_data do |_, _, data|
19
+ if verbose
20
+ puts
21
+ puts data.light_blue.on_white if verbose
22
+ end
23
+ stderr_data += data
24
+ end
25
+
26
+ channel.on_request("exit-status") do |_, data|
27
+ exit_code = data.read_long
28
+ end
29
+
30
+ channel.on_request("exit-signal") do |_, data|
31
+ exit_signal = data.read_long
32
+ end
33
+ end
34
+ end
35
+ self.loop
36
+ raise stderr_data unless exit_code == 0
37
+
38
+ {
39
+ stdout: stdout_data,
40
+ stderr: stderr_data,
41
+ exit_code: exit_code,
42
+ exit_signal: exit_signal
43
+ }
44
+ end
45
+ end
@@ -1,111 +1,114 @@
1
- class Deployer::RubyDeployer < Deployer::BaseDeployer
2
- attr_accessor :processor_names
3
-
4
- def initialize(processor_names, options)
5
- super(options)
6
- @processor_names = processor_names
7
- end
8
-
9
- def deploy!
10
- puts "deploying to #{stage.name} via #{deploy_via}".light_blue.on_blue
11
-
12
- Deployer::Executor.new(stage, verbose: verbose?) do |executor|
13
- create_base_dirs(executor)
14
-
15
-
16
- update_cached_copy(executor)
17
-
18
-
19
- # fetch processor_names unless they have been passed as an argument to the initializer
20
- processor_names_to_deploy = resolve_processor_names(executor, options)
21
- processor_names_to_deploy.each do |processor_name|
22
- puts
23
- puts "Deploying #{processor_name}".light_blue.on_blue
24
- log_deployment(executor, "Deploying #{processor_name} via #{deploy_via} from #{cached_copy_dir}")
25
- # stop old one
26
- executor.execute("kill -s TERM $(cat #{File.join(pids_dir, processor_name)}.pid)", abort_on_error: false, comment: "This is not sooo important")
27
-
28
- # unzip package
29
- target = deploy_dir('ruby')
30
- source = cached_copy_dir('ruby',"#{processor_name}.zip")
31
- executor.execute("rm -rf #{processor_dir(processor_name)} && unzip -o -d #{target} #{source}")
32
-
33
- # copy config
34
- executor.execute("if [[ -d #{config_source_dir(processor_name)} ]] ; then cp -r #{config_source_dir(processor_name)}/* #{processor_dir(processor_name)}; fi")
35
-
36
- # symlink log dir
37
- executor.execute("ln -s #{logs_dir} #{processor_dir(processor_name, 'logs')}")
38
-
39
- # symlink pids dir
40
- executor.execute("ln -s #{pids_dir} #{processor_dir(processor_name, 'pids')}")
41
-
42
- # install gems
43
- executor.execute("cd #{processor_dir(processor_name)} && bundle install --without test")
44
-
45
- # start new one
46
- executor.execute("cd #{processor_dir(processor_name)} && bundle exec ruby #{processor_name}.rb -d -e $EH_ENV")
47
- end
48
- end
49
- end
50
-
51
- private
52
-
53
- def update_cached_copy(executor)
54
- if via_scp?
55
- source = Eh::Settings.current.releases_dir('ruby', '*.zip')
56
- target_dir = File.join(cached_copy_dir, 'ruby')
57
- executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
58
- executor.upload(source, target_dir)
59
- else
60
- update_scm(executor)
61
- end
62
- end
63
-
64
- def logs_dir
65
- File.join(shared_dir, 'logs')
66
- end
67
-
68
- def pids_dir
69
- File.join(shared_dir, 'pids')
70
- end
71
-
72
- def deploy_dir(*extra_paths)
73
- File.join(base_dir, *extra_paths)
74
- end
75
-
76
- def processor_dir(*extra_paths)
77
- File.join(deploy_dir, 'ruby', *extra_paths)
78
- end
79
-
80
- def config_source_dir(processor_name)
81
- super('ruby', processor_name)
82
- end
83
-
84
- # Detect what processors to deploy
85
- #
86
- def resolve_processor_names(executor, options)
87
- available = remote_ls(executor, options, File.join(cached_copy_dir, 'ruby', '*.zip')).map do |name|
88
- File.basename(name, '.zip')
89
- end
90
-
91
- fetched = Array(processor_names).map do |name|
92
- if name.include?('*') # resolve pattern on remote machine
93
- remote_ls(executor, options, File.join(cached_copy_dir, 'ruby', "#{name}.zip"))
94
- else
95
- name
96
- end
97
- end
98
- if fetched.empty? # then fetch all
99
- fetched = available
100
- end
101
-
102
- fetched = fetched.flatten.map do |name|
103
- File.basename(name, '.zip')
104
- end
105
-
106
- verify_deployment_list!(fetched, available)
107
-
108
- fetched
109
- end
110
-
111
- end
1
+ class Deployer::RubyDeployer < Deployer::BaseDeployer
2
+ attr_accessor :processor_names
3
+
4
+ def initialize(processor_names, options)
5
+ super(options)
6
+ @processor_names = processor_names
7
+ end
8
+
9
+ def deploy!
10
+ puts "deploying to #{stage.name} via #{deploy_via}".light_blue.on_blue
11
+
12
+ Deployer::Executor.new(stage, verbose: verbose?) do |executor|
13
+ create_base_dirs(executor)
14
+
15
+
16
+ update_cached_copy(executor)
17
+
18
+
19
+ # fetch processor_names unless they have been passed as an argument to the initializer
20
+ processor_names_to_deploy = resolve_processor_names(executor, options)
21
+ processor_names_to_deploy.each do |processor_name|
22
+ puts
23
+ puts "Deploying #{processor_name}".light_blue.on_blue
24
+ log_deployment(executor, "Deploying #{processor_name} via #{deploy_via} from #{cached_copy_dir}")
25
+ # stop old one
26
+ executor.execute("kill -s TERM $(cat #{File.join(pids_dir, processor_name)}.pid)", abort_on_error: false, comment: "This is not sooo important")
27
+
28
+ # unzip package
29
+ target = deploy_dir('ruby')
30
+ source = cached_copy_dir('ruby',"#{processor_name}.zip")
31
+ executor.execute("rm -rf #{processor_dir(processor_name)} && unzip -o -d #{target} #{source}")
32
+
33
+ # copy config
34
+ executor.execute("if [[ -d #{config_source_dir(processor_name)} ]] ; then cp -r #{config_source_dir(processor_name)}/* #{processor_dir(processor_name)}; fi")
35
+
36
+ # remove log dir if it exists
37
+ executor.execute("if [[ -d #{processor_dir(processor_name, 'logs')} ]] ; then rm -rf #{processor_dir(processor_name, 'logs')}; fi")
38
+
39
+ # symlink log dir
40
+ executor.execute("ln -s #{logs_dir} #{processor_dir(processor_name, 'logs')}")
41
+
42
+ # symlink pids dir
43
+ executor.execute("ln -s #{pids_dir} #{processor_dir(processor_name, 'pids')}")
44
+
45
+ # install gems
46
+ executor.execute("cd #{processor_dir(processor_name)} && bundle install --without test")
47
+
48
+ # start new one
49
+ executor.execute("cd #{processor_dir(processor_name)} && bundle exec ruby #{processor_name}.rb -d -e $EH_ENV")
50
+ end
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def update_cached_copy(executor)
57
+ if via_scp?
58
+ source = Eh::Settings.current.releases_dir('ruby', '*.zip')
59
+ target_dir = File.join(cached_copy_dir, 'ruby')
60
+ executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
61
+ executor.upload(source, target_dir)
62
+ else
63
+ update_scm(executor)
64
+ end
65
+ end
66
+
67
+ def logs_dir
68
+ File.join(shared_dir, 'logs')
69
+ end
70
+
71
+ def pids_dir
72
+ File.join(shared_dir, 'pids')
73
+ end
74
+
75
+ def deploy_dir(*extra_paths)
76
+ File.join(base_dir, *extra_paths)
77
+ end
78
+
79
+ def processor_dir(*extra_paths)
80
+ File.join(deploy_dir, 'ruby', *extra_paths)
81
+ end
82
+
83
+ def config_source_dir(processor_name)
84
+ super('ruby', processor_name)
85
+ end
86
+
87
+ # Detect what processors to deploy
88
+ #
89
+ def resolve_processor_names(executor, options)
90
+ available = remote_ls(executor, options, File.join(cached_copy_dir, 'ruby', '*.zip')).map do |name|
91
+ File.basename(name, '.zip')
92
+ end
93
+
94
+ fetched = Array(processor_names).map do |name|
95
+ if name.include?('*') # resolve pattern on remote machine
96
+ remote_ls(executor, options, File.join(cached_copy_dir, 'ruby', "#{name}.zip"))
97
+ else
98
+ name
99
+ end
100
+ end
101
+ if fetched.empty? # then fetch all
102
+ fetched = available
103
+ end
104
+
105
+ fetched = fetched.flatten.map do |name|
106
+ File.basename(name, '.zip')
107
+ end
108
+
109
+ verify_deployment_list!(fetched, available)
110
+
111
+ fetched
112
+ end
113
+
114
+ end
@@ -1,36 +1,36 @@
1
- class Deployer::Stage
2
- attr_reader :name, :hosts
3
-
4
- def initialize(name)
5
- @name = name
6
- @hosts = []
7
- end
8
-
9
- def host(host, port, user)
10
- @hosts << {
11
- host: host,
12
- port: port,
13
- user: user
14
- }
15
- self
16
- end
17
-
18
- # returns a new stage which only contains one host
19
- #
20
- def single_host_stage
21
- stage = Deployer::Stage.new(name)
22
- stage.host(hosts[0][:host], hosts[0][:port], hosts[0][:user])
23
- stage
24
- end
25
-
26
- def self.load(name, file)
27
- data = YAML.load_file(file)
28
- data.map do |_, config|
29
- stage = Deployer::Stage.new(name)
30
- config['hosts'].each do |host|
31
- stage.host(host['host'], host['port'], host['user'])
32
- end
33
- stage
34
- end.first
35
- end
36
- end
1
+ class Deployer::Stage
2
+ attr_reader :name, :hosts
3
+
4
+ def initialize(name)
5
+ @name = name
6
+ @hosts = []
7
+ end
8
+
9
+ def host(host, port, user)
10
+ @hosts << {
11
+ host: host,
12
+ port: port,
13
+ user: user
14
+ }
15
+ self
16
+ end
17
+
18
+ # returns a new stage which only contains one host
19
+ #
20
+ def single_host_stage
21
+ stage = Deployer::Stage.new(name)
22
+ stage.host(hosts[0][:host], hosts[0][:port], hosts[0][:user])
23
+ stage
24
+ end
25
+
26
+ def self.load(name, file)
27
+ data = YAML.load_file(file)
28
+ data.map do |_, config|
29
+ stage = Deployer::Stage.new(name)
30
+ config['hosts'].each do |host|
31
+ stage.host(host['host'], host['port'], host['user'])
32
+ end
33
+ stage
34
+ end.first
35
+ end
36
+ end
data/lib/deployer.rb CHANGED
@@ -1,12 +1,12 @@
1
- module Deployer
2
- end
3
-
4
- require_relative 'deployer/executor'
5
- require_relative 'deployer/net_ssh_extension'
6
- require_relative 'deployer/stage'
7
-
8
- require_relative 'deployer/base_deployer'
9
- require_relative 'deployer/mule_deployer'
10
- require_relative 'deployer/ruby_deployer'
11
- require_relative 'deployer/config_deployer'
12
- require_relative 'deployer/console_deployer'
1
+ module Deployer
2
+ end
3
+
4
+ require_relative 'deployer/executor'
5
+ require_relative 'deployer/net_ssh_extension'
6
+ require_relative 'deployer/stage'
7
+
8
+ require_relative 'deployer/base_deployer'
9
+ require_relative 'deployer/mule_deployer'
10
+ require_relative 'deployer/ruby_deployer'
11
+ require_relative 'deployer/config_deployer'
12
+ require_relative 'deployer/console_deployer'
@@ -1,23 +1,23 @@
1
- desc 'deploy a single channel adapter'
2
- arg_name '[channel_adapter[,other_channel_adapter,pattern*]]'
3
-
4
- command :deploy_mule do |c|
5
- c.flag([:stage], desc: 'stage', type: String, long_desc: 'Stage where channel adapter is deployed to', default_value: Eh::Settings.current.default_stage)
6
- c.flag([:deploy_via], desc: 'how to get hold of the channel adapter: scm or scp', type: String, long_desc: 'copy the channel adapter zip file via scp from this machine or check it out from scm', default_value: 'svn')
7
-
8
- c.switch([:v, :verbose], :desc => 'Show additional output.')
9
-
10
- c.action do |global_options, options, args|
11
- begin
12
- if args[0]
13
- adapter_names = args[0].split(',').map(&:strip)
14
- else
15
- adapter_names = nil
16
- end
17
- Deployer::MuleDeployer.new(adapter_names, options).deploy!
18
- rescue => e
19
- puts e.message
20
- puts e.backtrace.join("\n")
21
- end
22
- end
23
- end
1
+ desc 'deploy a single channel adapter'
2
+ arg_name '[channel_adapter[,other_channel_adapter,pattern*]]'
3
+
4
+ command :deploy_mule do |c|
5
+ c.flag([:stage], desc: 'stage', type: String, long_desc: 'Stage where channel adapter is deployed to', default_value: Eh::Settings.current.default_stage)
6
+ c.flag([:deploy_via], desc: 'how to get hold of the channel adapter: scm or scp', type: String, long_desc: 'copy the channel adapter zip file via scp from this machine or check it out from scm', default_value: 'svn')
7
+
8
+ c.switch([:v, :verbose], :desc => 'Show additional output.')
9
+
10
+ c.action do |global_options, options, args|
11
+ begin
12
+ if args[0]
13
+ adapter_names = args[0].split(',').map(&:strip)
14
+ else
15
+ adapter_names = nil
16
+ end
17
+ Deployer::MuleDeployer.new(adapter_names, options).deploy!
18
+ rescue => e
19
+ puts e.message
20
+ puts e.backtrace.join("\n")
21
+ end
22
+ end
23
+ end