vagrant-ec-sandbox 0.1.0.Preview
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/vagrant-ec-sandbox/action/base.rb +53 -0
- data/lib/vagrant-ec-sandbox/action/check_dir.rb +41 -0
- data/lib/vagrant-ec-sandbox/action/check_file.rb +41 -0
- data/lib/vagrant-ec-sandbox/action/code/install.rb +0 -0
- data/lib/vagrant-ec-sandbox/action/code/prepare_dist.rb +37 -0
- data/lib/vagrant-ec-sandbox/action/code/remove.rb +0 -0
- data/lib/vagrant-ec-sandbox/action/code.rb +15 -0
- data/lib/vagrant-ec-sandbox/action/dist/check_artifact.rb +26 -0
- data/lib/vagrant-ec-sandbox/action/dist/check_wildfly_installer.rb +28 -0
- data/lib/vagrant-ec-sandbox/action/dist/clear_contents.rb +34 -0
- data/lib/vagrant-ec-sandbox/action/dist/config_ec.rb +92 -0
- data/lib/vagrant-ec-sandbox/action/dist/deploy_ecapp.rb +44 -0
- data/lib/vagrant-ec-sandbox/action/dist/get_vbuild.rb +39 -0
- data/lib/vagrant-ec-sandbox/action/dist/get_vnexus.rb +65 -0
- data/lib/vagrant-ec-sandbox/action/dist/install_wildfly.rb +40 -0
- data/lib/vagrant-ec-sandbox/action/dist/make_contents.rb +36 -0
- data/lib/vagrant-ec-sandbox/action/dist.rb +44 -0
- data/lib/vagrant-ec-sandbox/action/init/env_config_confirm.rb +18 -0
- data/lib/vagrant-ec-sandbox/action/init/init_dir.rb +31 -0
- data/lib/vagrant-ec-sandbox/action/init/init_vagrant.rb +67 -0
- data/lib/vagrant-ec-sandbox/action/init.rb +11 -0
- data/lib/vagrant-ec-sandbox/action/select_db.rb +51 -0
- data/lib/vagrant-ec-sandbox/action/up_vagrant.rb +23 -0
- data/lib/vagrant-ec-sandbox/action/use_app_server.rb +27 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/get_isinstalled.rb +50 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/redirect_dirs.rb +56 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/reload.rb +45 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/reload_admin.rb +38 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/remove.rb +32 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/start.rb +42 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/start_admin.rb +36 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/status.rb +36 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/stop.rb +42 -0
- data/lib/vagrant-ec-sandbox/action/wildfly/switch_db.rb +48 -0
- data/lib/vagrant-ec-sandbox/action/wildfly.rb +79 -0
- data/lib/vagrant-ec-sandbox/action.rb +129 -0
- data/lib/vagrant-ec-sandbox/command/as/config_db.rb +34 -0
- data/lib/vagrant-ec-sandbox/command/as/install.rb +34 -0
- data/lib/vagrant-ec-sandbox/command/as/restart.rb +33 -0
- data/lib/vagrant-ec-sandbox/command/as/show_status.rb +32 -0
- data/lib/vagrant-ec-sandbox/command/as/start.rb +33 -0
- data/lib/vagrant-ec-sandbox/command/as/stop.rb +32 -0
- data/lib/vagrant-ec-sandbox/command/as/test.rb +32 -0
- data/lib/vagrant-ec-sandbox/command/base.rb +52 -0
- data/lib/vagrant-ec-sandbox/command/init.rb +29 -0
- data/lib/vagrant-ec-sandbox/command/root.rb +101 -0
- data/lib/vagrant-ec-sandbox/communicator_extender.rb +45 -0
- data/lib/vagrant-ec-sandbox/config/sandbox_config.rb +235 -0
- data/lib/vagrant-ec-sandbox/db_selector/db_info.rb +8 -0
- data/lib/vagrant-ec-sandbox/db_selector/db_selector.rb +20 -0
- data/lib/vagrant-ec-sandbox/db_selector/direct_selector.rb +30 -0
- data/lib/vagrant-ec-sandbox/db_selector/direct_selector_config.rb +37 -0
- data/lib/vagrant-ec-sandbox/db_selector/manual_input_selector.rb +32 -0
- data/lib/vagrant-ec-sandbox/db_selector/oracle_db_info.rb +19 -0
- data/lib/vagrant-ec-sandbox/db_selector/selector_config.rb +22 -0
- data/lib/vagrant-ec-sandbox/dir_structure.rb +306 -0
- data/lib/vagrant-ec-sandbox/errors.rb +33 -0
- data/lib/vagrant-ec-sandbox/helpers.rb +11 -0
- data/lib/vagrant-ec-sandbox/plugin.rb +29 -0
- data/lib/vagrant-ec-sandbox/resource/hg_clone_provider.rb +46 -0
- data/lib/vagrant-ec-sandbox/resource/hg_clone_provider_config.rb +29 -0
- data/lib/vagrant-ec-sandbox/resource/local_provider.rb +19 -0
- data/lib/vagrant-ec-sandbox/resource/local_provider_config.rb +20 -0
- data/lib/vagrant-ec-sandbox/resource/maven_provider.rb +51 -0
- data/lib/vagrant-ec-sandbox/resource/maven_provider_config.rb +20 -0
- data/lib/vagrant-ec-sandbox/resource/provider_config.rb +10 -0
- data/lib/vagrant-ec-sandbox/resource/resource_provider.rb +20 -0
- data/lib/vagrant-ec-sandbox/server/app_server/as.rb +18 -0
- data/lib/vagrant-ec-sandbox/server/app_server/as_config.rb +38 -0
- data/lib/vagrant-ec-sandbox/server/server.rb +18 -0
- data/lib/vagrant-ec-sandbox/session.rb +146 -0
- data/lib/vagrant-ec-sandbox/util/host/dir_util.rb +39 -0
- data/lib/vagrant-ec-sandbox/util/host/file_util.rb +67 -0
- data/lib/vagrant-ec-sandbox/util/host/hg_clone.rb +32 -0
- data/lib/vagrant-ec-sandbox/util/host/mvn.rb +54 -0
- data/lib/vagrant-ec-sandbox/util/name.rb +22 -0
- data/lib/vagrant-ec-sandbox/util/output_buffer.rb +58 -0
- data/lib/vagrant-ec-sandbox/util/sandbox/get_user_processes.rb +85 -0
- data/lib/vagrant-ec-sandbox/util/sandbox/system_command.rb +91 -0
- data/lib/vagrant-ec-sandbox/util/sandbox/wildfly/add-user.rb +48 -0
- data/lib/vagrant-ec-sandbox/util/sandbox/wildfly/deploy.rb +34 -0
- data/lib/vagrant-ec-sandbox/util/sandbox/wildfly/response.rb +32 -0
- data/lib/vagrant-ec-sandbox/util/sandbox/wildfly/run_cli.rb +86 -0
- data/lib/vagrant-ec-sandbox/version.rb +5 -0
- data/lib/vagrant-ec-sandbox.rb +113 -0
- data/templates/action/dist/install_wildfly.sh.erb +23 -0
- data/templates/action/hello.sh.erb +1 -0
- data/templates/action/init/Vagrantfile.erb +91 -0
- data/templates/action/init/provision.sh.erb +71 -0
- data/templates/action/init/resources/settings.xml.erb +118 -0
- data/templates/action/wildfly/config_ec.sh.erb +5 -0
- data/templates/action/wildfly/deloy.cli.erb +0 -0
- data/templates/action/wildfly/open_interface.cli.erb +3 -0
- data/templates/action/wildfly/redirect_log.cli.erb +3 -0
- data/templates/action/wildfly/switch_db.cli.erb +43 -0
- data/templates/locales/en.yml +35 -0
- metadata +168 -0
@@ -0,0 +1,146 @@
|
|
1
|
+
require "vagrant/registry"
|
2
|
+
require_relative 'resource/local_provider'
|
3
|
+
require_relative 'resource/local_provider_config'
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module ECSandbox
|
7
|
+
class Session
|
8
|
+
def self.default
|
9
|
+
return @__default
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.init_default(env)
|
13
|
+
config = env.vagrantfile.config.ec
|
14
|
+
config ||= VagrantPlugins::ECSandbox::Config::SandboxConfig.new
|
15
|
+
|
16
|
+
@__default = new(config, env.cwd)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.create_machine(machine)
|
20
|
+
raise "default is not initialized" unless default
|
21
|
+
|
22
|
+
config = machine.config.ec
|
23
|
+
config ||= VagrantPlugins::ECSandbox::Config::SandboxConfig.new
|
24
|
+
session = Session.new(config, default.cwd)
|
25
|
+
|
26
|
+
return default.merge(session)
|
27
|
+
end
|
28
|
+
|
29
|
+
attr_reader :servers
|
30
|
+
attr_reader :server_ids
|
31
|
+
attr_reader :db_selectors
|
32
|
+
attr_reader :db_selector_ids
|
33
|
+
attr_reader :dir_structures
|
34
|
+
attr_reader :config
|
35
|
+
attr_reader :cwd
|
36
|
+
|
37
|
+
def initialize(config, cwd, opts=nil)
|
38
|
+
opts = {
|
39
|
+
skip_init: false
|
40
|
+
}.merge(opts || {})
|
41
|
+
|
42
|
+
@resource_providers = Vagrant::Registry.new
|
43
|
+
@servers = Vagrant::Registry.new
|
44
|
+
@server_ids = {}
|
45
|
+
@db_selectors = Vagrant::Registry.new
|
46
|
+
@db_selector_ids = {}
|
47
|
+
@cwd = cwd
|
48
|
+
@config = config
|
49
|
+
@dir_structures = {
|
50
|
+
host: DirStructure.of(:host, working_dir:cwd),
|
51
|
+
sandbox: DirStructure.of(:sandbox, working_dir:cwd)
|
52
|
+
}
|
53
|
+
|
54
|
+
return if opts[:skip_init]
|
55
|
+
|
56
|
+
config.get_resources.each do |category, name|
|
57
|
+
internal_name = __get_resource_internal_name(category, name)
|
58
|
+
@resource_providers.register(internal_name) do
|
59
|
+
provider_name = config.get_resource_provider_name(category, name)
|
60
|
+
provider_config = config.get_resource_config(category, name)
|
61
|
+
|
62
|
+
klazz = VagrantPlugins::ECSandbox.resource_provider_defs[provider_name]
|
63
|
+
raise "resource provider for #{provider_name} is not registered" unless klazz
|
64
|
+
new_resource_provider = klazz.new(category, name, provider_config)
|
65
|
+
new_resource_provider
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
config.get_servers.each do |id, name|
|
70
|
+
# register server
|
71
|
+
@servers.register(id) do
|
72
|
+
server_config = config.get_server_config(id)
|
73
|
+
klazz = VagrantPlugins::ECSandbox.server_defs[name]
|
74
|
+
new_server = klazz.new(id, server_config)
|
75
|
+
new_server
|
76
|
+
end
|
77
|
+
|
78
|
+
# register server id
|
79
|
+
ids = @server_ids[name] || []
|
80
|
+
ids << id
|
81
|
+
@server_ids[name] = ids
|
82
|
+
end
|
83
|
+
|
84
|
+
config.get_db_selectors.each do |id, name|
|
85
|
+
# register db-selector
|
86
|
+
@db_selectors.register(id) do
|
87
|
+
selector_config = config.get_db_selector_config(id)
|
88
|
+
klazz = VagrantPlugins::ECSandbox.db_selector_defs[name]
|
89
|
+
new_db_selector = klazz.new(id, selector_config)
|
90
|
+
new_db_selector
|
91
|
+
end
|
92
|
+
|
93
|
+
# register db-selector id
|
94
|
+
ids = @db_selector_ids[name] || []
|
95
|
+
ids << id
|
96
|
+
@db_selector_ids[name] = ids
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def resource_provider(category, name)
|
101
|
+
provider = @resource_providers.get(__get_resource_internal_name(category, name))
|
102
|
+
unless provider
|
103
|
+
config = VagrantPlugins::ECSandbox::Resource::LocalProviderConfig.new
|
104
|
+
config.path = @dir_structures[:host].resource(category, name)
|
105
|
+
provider = VagrantPlugins::ECSandbox::Resource::LocalProvider.new(category, name, config)
|
106
|
+
end
|
107
|
+
|
108
|
+
provider
|
109
|
+
end
|
110
|
+
|
111
|
+
# Merge one session with another and return a completely new
|
112
|
+
# session.
|
113
|
+
def merge(other)
|
114
|
+
self.class.new(other.config, other.cwd, skip_init: true).tap do |result|
|
115
|
+
result.merge!(self)
|
116
|
+
result.merge!(other)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# Like #{merge} but merges into self.
|
121
|
+
def merge!(other)
|
122
|
+
@resource_providers.merge!(other.instance_variable_get(:@resource_providers))
|
123
|
+
@servers.merge!(other.servers)
|
124
|
+
@db_selectors.merge!(other.db_selectors)
|
125
|
+
@dir_structures.merge!(other.dir_structures)
|
126
|
+
@server_ids.merge!(other.server_ids) { |key, old_val, new_val|
|
127
|
+
(old_val || []) | (new_val || [])
|
128
|
+
}
|
129
|
+
@db_selector_ids.merge!(other.db_selector_ids) { |key, old_val, new_val|
|
130
|
+
(old_val || []) | (new_val || [])
|
131
|
+
}
|
132
|
+
|
133
|
+
self
|
134
|
+
end
|
135
|
+
|
136
|
+
def __get_resource_internal_name(category, name)
|
137
|
+
category = category.to_s if category.is_a?(Symbol)
|
138
|
+
name = name.to_s if name.is_a?(Symbol)
|
139
|
+
name = "#{category}_#{name}"
|
140
|
+
|
141
|
+
name.to_sym
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module ECSandbox
|
6
|
+
module Util
|
7
|
+
module Host
|
8
|
+
class DirUtil
|
9
|
+
def self.create(dir, contents, opts=nil)
|
10
|
+
path.mkdir unless path.exist?
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.delete(path)
|
14
|
+
path.delete if path.exist?
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.using(contents, env, opts=nil, &block)
|
18
|
+
tmpfile_opts = {
|
19
|
+
make_parents: true,
|
20
|
+
delete_existing: true,
|
21
|
+
file_name_base: nil,
|
22
|
+
category: nil
|
23
|
+
}.merge(opts || {}) do |key, oldval, newval|
|
24
|
+
oldval || newval
|
25
|
+
end
|
26
|
+
|
27
|
+
name = ::VagrantPlugins::ECSandbox::Util::Name.unique(base:tmpfile_opts[:file_name_base])
|
28
|
+
dir = ::VagrantPlugins::ECSandbox::Util::DirUtil.tmp(category)
|
29
|
+
path = Pathname.new(File.expand_path(name, dir))
|
30
|
+
|
31
|
+
create(path, contents, tmpfile_opts)
|
32
|
+
block.call(path)
|
33
|
+
delete(path)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "log4r"
|
2
|
+
require "vagrant/plugin/manager"
|
3
|
+
require "vagrant/util/platform"
|
4
|
+
require_relative "../name"
|
5
|
+
require_relative "dir_util"
|
6
|
+
|
7
|
+
module VagrantPlugins
|
8
|
+
module ECSandbox
|
9
|
+
module Util
|
10
|
+
module Host
|
11
|
+
class FileUtil
|
12
|
+
def self.create(dest, contents, opts=nil)
|
13
|
+
new_opts = {
|
14
|
+
make_dir: true,
|
15
|
+
delete_existing: true,
|
16
|
+
use_unit_line_ending: true
|
17
|
+
}.merge(opts || {}) do |key, oldval, newval|
|
18
|
+
oldval || newval
|
19
|
+
end
|
20
|
+
|
21
|
+
if !dest
|
22
|
+
return
|
23
|
+
end
|
24
|
+
|
25
|
+
if new_opts[:delete_existing] && dest.exist?
|
26
|
+
dest.delete
|
27
|
+
end
|
28
|
+
|
29
|
+
FileUtils.mkdir_p(dest.dirname) if new_opts[:make_dir] && !dest.dirname.exist?
|
30
|
+
|
31
|
+
if new_opts[:use_unit_line_ending] && Vagrant::Util::Platform.windows?
|
32
|
+
contents = contents.gsub(/\r\n?/,"\n")
|
33
|
+
end
|
34
|
+
|
35
|
+
if dest.open("wb+") do |f|
|
36
|
+
f.write(contents)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.delete(path)
|
42
|
+
path.delete if path.exist?
|
43
|
+
end
|
44
|
+
|
45
|
+
# def self.using(contents, tmp_root, opts=nil, &block)
|
46
|
+
# tmpfile_opts = {
|
47
|
+
# make_parents: true,
|
48
|
+
# delete_existing: true,
|
49
|
+
# file_name_base: nil,
|
50
|
+
# category: nil
|
51
|
+
# }.merge(opts || {}) do |key, oldval, newval|
|
52
|
+
# oldval || newval
|
53
|
+
# end
|
54
|
+
|
55
|
+
# name = ::VagrantPlugins::ECSandbox::Util::Name.unique(base:tmpfile_opts[:file_name_base])
|
56
|
+
# path = Pathname.new(File.expand_path(name, tmp_root))
|
57
|
+
|
58
|
+
# create(path, contents, tmpfile_opts)
|
59
|
+
# block.call(path)
|
60
|
+
# # TODO: windows permission issue when deleting a file
|
61
|
+
# #delete(path)
|
62
|
+
# end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "log4r"
|
2
|
+
require "vagrant/plugin/manager"
|
3
|
+
require "vagrant/util/platform"
|
4
|
+
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module ECSandbox
|
8
|
+
module Util
|
9
|
+
module Host
|
10
|
+
class HgClone
|
11
|
+
def self.execute(source, target, branch, env)
|
12
|
+
new(source, target, branch).execute(env)
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(source, target, branch)
|
16
|
+
@source = source
|
17
|
+
@target = target
|
18
|
+
@branch = branch || 'default'
|
19
|
+
end
|
20
|
+
|
21
|
+
def execute(env)
|
22
|
+
Vagrant::Util::Subprocess.execute("hg", "clone", "-b#{@branch}", @source.to_s, @target.to_s, notify:[:stdout, :stderr]) do |type, data|
|
23
|
+
if type == :stderr
|
24
|
+
raise "failed to clone, detailed message - " << data
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "log4r"
|
2
|
+
require "vagrant/plugin/manager"
|
3
|
+
require "vagrant/util/platform"
|
4
|
+
require_relative "../output_buffer"
|
5
|
+
|
6
|
+
|
7
|
+
module VagrantPlugins
|
8
|
+
module ECSandbox
|
9
|
+
module Util
|
10
|
+
module Host
|
11
|
+
class Mvn
|
12
|
+
def self.execute(dir, env, *phases, &block)
|
13
|
+
new(dir).execute(env, phases, &block)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.install(dir, env, &block)
|
17
|
+
new(dir).execute(env, "clean", "install", &block)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.copy()
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def initialize(dir)
|
25
|
+
@dir = dir.to_s
|
26
|
+
end
|
27
|
+
|
28
|
+
def execute(env, *phases, &block)
|
29
|
+
commands = ["mvn"].concat(phases || [])
|
30
|
+
listener = nil
|
31
|
+
|
32
|
+
if block
|
33
|
+
listener = VagrantPlugins::ECSandbox::Util::OutputBuffer.listen do |io_name, data|
|
34
|
+
if (match=data.match(/(Downloading: )(.*)/i))
|
35
|
+
block.call(:downloading, match.captures[1].strip)
|
36
|
+
# elsif (match=data.match(/(\[INFO\] )(Building )(.*)( )(.*)/i))
|
37
|
+
# block.call(:start_build, {artifact:match.captures[2].strip, version:match.captures[4].strip})
|
38
|
+
elsif (match=data.match(/(\[INFO\] )(BUILD SUCCESS)(.*)/i))
|
39
|
+
block.call(:result, :success)
|
40
|
+
elsif (match=data.match(/(\[INFO\] )(BUILD FAILURE)(.*)/i))
|
41
|
+
block.call(:result, :failure)
|
42
|
+
elsif (match=data.match(/(\[INFO\] )(Installing )(.*)( )(.*)/i))
|
43
|
+
block.call(:installing, {local:match.captures[2].strip, repo:match.captures[4].strip})
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
Vagrant::Util::Subprocess.execute(*commands, notify:[:stdout, :stderr], workdir:@dir, &listener)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "log4r"
|
2
|
+
require "vagrant/plugin/manager"
|
3
|
+
require "vagrant/util/platform"
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module ECSandbox
|
7
|
+
module Util
|
8
|
+
class Name
|
9
|
+
def self.unique(opts=nil)
|
10
|
+
new_opts = {
|
11
|
+
base:nil,
|
12
|
+
suffix:nil
|
13
|
+
}.merge(opts || {}) do |key, oldval, newval|
|
14
|
+
oldval || newval
|
15
|
+
end
|
16
|
+
|
17
|
+
(new_opts[:base] || 'any') << "#" << DateTime.now.strftime('%Q') << "#" << SecureRandom.random_number(1000).to_s << (new_opts[:suffix] || '')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module ECSandbox
|
3
|
+
module Util
|
4
|
+
class OutputBuffer
|
5
|
+
def initialize(opts=nil, &block)
|
6
|
+
opts = {
|
7
|
+
skip_all:false
|
8
|
+
}.merge(opts || {})
|
9
|
+
@block = block;
|
10
|
+
@skip_all = (opts[:skip_all] || false) || !@block
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.listen(opts=nil, &block)
|
14
|
+
new(opts, &block).method(:on_output)
|
15
|
+
end
|
16
|
+
|
17
|
+
def on_output(io_name, data)
|
18
|
+
if @skip_all
|
19
|
+
return
|
20
|
+
end
|
21
|
+
|
22
|
+
@pending ||= {}
|
23
|
+
io_name_sym = io_name.to_sym
|
24
|
+
|
25
|
+
data.lines.map {|l|
|
26
|
+
if l.size == 0
|
27
|
+
return
|
28
|
+
end
|
29
|
+
|
30
|
+
if l[l.size-1].ord != 10 #line feed
|
31
|
+
@pending[io_name_sym] ||= ""
|
32
|
+
@pending[io_name_sym] << l
|
33
|
+
return
|
34
|
+
end
|
35
|
+
|
36
|
+
if @pending[io_name_sym]
|
37
|
+
l = @pending[io_name_sym] << l
|
38
|
+
@pending[io_name_sym] = nil
|
39
|
+
end
|
40
|
+
|
41
|
+
l = l.strip
|
42
|
+
@block.call(io_name_sym, l)
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
def skip_all
|
47
|
+
@skip_all = true
|
48
|
+
end
|
49
|
+
|
50
|
+
def reset
|
51
|
+
@result = nil
|
52
|
+
@pending = nil
|
53
|
+
@skip_all = true if @block
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require "log4r"
|
2
|
+
require "vagrant/plugin/manager"
|
3
|
+
require "vagrant/util/platform"
|
4
|
+
require_relative "system_command"
|
5
|
+
require_relative "../../errors"
|
6
|
+
|
7
|
+
|
8
|
+
module VagrantPlugins
|
9
|
+
module ECSandbox
|
10
|
+
module Util
|
11
|
+
module Sandbox
|
12
|
+
class GetUserProcesses < SystemCommand
|
13
|
+
def self.execute(username, env)
|
14
|
+
new(username).execute(env)
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(username)
|
18
|
+
@username = username
|
19
|
+
super("ps -u #{username} -o pid,cmd --no-header", {good_exit: [0, 1]})
|
20
|
+
end
|
21
|
+
|
22
|
+
def on_line(type, line)
|
23
|
+
if type == :stderr
|
24
|
+
if line.match(/(user name does not exist)/i)
|
25
|
+
skip_outputs
|
26
|
+
@error = 1
|
27
|
+
end
|
28
|
+
else
|
29
|
+
@result ||= []
|
30
|
+
|
31
|
+
seperator_idx = line.index(' ')
|
32
|
+
|
33
|
+
if !seperator_idx
|
34
|
+
return
|
35
|
+
end
|
36
|
+
|
37
|
+
pid = line[0..seperator_idx-1]
|
38
|
+
command = line[seperator_idx+1..line.size]
|
39
|
+
info = find_info(command)
|
40
|
+
|
41
|
+
@result << {:pid=>pid, :command=>command, :info=>info}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def on_end(result_code)
|
47
|
+
if @error == 1
|
48
|
+
raise VagrantPlugins::ECSandbox::Errors::UserNameNotFoundError, username: @username
|
49
|
+
end
|
50
|
+
|
51
|
+
@result ||= []
|
52
|
+
end
|
53
|
+
|
54
|
+
def find_info(command)
|
55
|
+
info = {}
|
56
|
+
|
57
|
+
name = ""
|
58
|
+
type = nil
|
59
|
+
|
60
|
+
if (match=command.match(/(\/bin\/sh .*bin\/domain\.sh)/i))
|
61
|
+
type = :wildfly_domain_sh
|
62
|
+
name = "Wildfly Domain Executable"
|
63
|
+
elsif (match=command.match(/(java -D\[)(.*)(\])/i))
|
64
|
+
name = match.captures[1].strip
|
65
|
+
|
66
|
+
if name.start_with?("Process Controller")
|
67
|
+
type = :wildfly_process_controller
|
68
|
+
elsif name.start_with?("Host Controller")
|
69
|
+
type = :wildfly_host_controller
|
70
|
+
elsif name.start_with?("Server:")
|
71
|
+
type = :wildfly_server
|
72
|
+
info[:server_name] = name[7,name.size]
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
info[:name] = name
|
77
|
+
info[:type] = type
|
78
|
+
|
79
|
+
info
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require "log4r"
|
2
|
+
require "vagrant/plugin/manager"
|
3
|
+
require "vagrant/util/platform"
|
4
|
+
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module ECSandbox
|
8
|
+
module Util
|
9
|
+
module Sandbox
|
10
|
+
class SystemCommand
|
11
|
+
def initialize(command, opts=nil)
|
12
|
+
@command = command
|
13
|
+
@opts = {
|
14
|
+
sudo: false
|
15
|
+
}.merge(opts || {})
|
16
|
+
end
|
17
|
+
|
18
|
+
def execute(env)
|
19
|
+
ext_logger = VagrantPlugins::ECSandbox.logger("parser::base")
|
20
|
+
ext_logger.debug("To run command #{@command} with parser.")
|
21
|
+
communicate = env[:machine].communicate
|
22
|
+
|
23
|
+
if (@opts[:sudo])
|
24
|
+
r = communicate.sudo(@command, @opts.merge(@opts || {})) do |type, data|
|
25
|
+
on_output(type, data)
|
26
|
+
end
|
27
|
+
else
|
28
|
+
r = communicate.execute(@command, @opts.merge(@opts || {})) do |type, data|
|
29
|
+
on_output(type, data)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
begin
|
34
|
+
on_end(r)
|
35
|
+
result = @result
|
36
|
+
@result = nil
|
37
|
+
ensure
|
38
|
+
reset
|
39
|
+
end
|
40
|
+
|
41
|
+
result
|
42
|
+
end
|
43
|
+
|
44
|
+
def on_output(type, data)
|
45
|
+
if @skip_outputs
|
46
|
+
return
|
47
|
+
end
|
48
|
+
|
49
|
+
@pending ||= {}
|
50
|
+
type_sym = type.to_sym
|
51
|
+
|
52
|
+
data.lines.map {|l|
|
53
|
+
if l.size == 0
|
54
|
+
return
|
55
|
+
end
|
56
|
+
|
57
|
+
if l[l.size-1].ord != 10 #line feed
|
58
|
+
@pending[type_sym] ||= ""
|
59
|
+
@pending[type_sym] << l
|
60
|
+
return
|
61
|
+
end
|
62
|
+
|
63
|
+
if @pending[type_sym]
|
64
|
+
l = @pending[type_sym] << l
|
65
|
+
@pending[type_sym] = nil
|
66
|
+
end
|
67
|
+
|
68
|
+
l = l.strip
|
69
|
+
on_line(type_sym, l)
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
73
|
+
def skip_outputs
|
74
|
+
@skip_outputs = true
|
75
|
+
end
|
76
|
+
|
77
|
+
def on_line(type, line)
|
78
|
+
end
|
79
|
+
|
80
|
+
def on_end(result_code)
|
81
|
+
end
|
82
|
+
|
83
|
+
def reset
|
84
|
+
@result = nil
|
85
|
+
@skip_outputs = nil
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "log4r"
|
2
|
+
require "vagrant/plugin/manager"
|
3
|
+
require "vagrant/util/platform"
|
4
|
+
require_relative "../system_command"
|
5
|
+
|
6
|
+
|
7
|
+
module VagrantPlugins
|
8
|
+
module ECSandbox
|
9
|
+
module Util
|
10
|
+
module Sandbox
|
11
|
+
module Wildfly
|
12
|
+
class AddUser < VagrantPlugins::ECSandbox::Util::Sandbox::SystemCommand
|
13
|
+
def self.execute(env, user_name, password, opts=nil)
|
14
|
+
new(env[:sandbox_session], user_name, password, opts).execute(env)
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(session, user_name, password, opts=nil)
|
18
|
+
new_opts = {
|
19
|
+
user_type: :management
|
20
|
+
}.merge(opts || {})
|
21
|
+
|
22
|
+
@user_name = user_name
|
23
|
+
@password = password
|
24
|
+
@user_type = opts[:user_type] || :management
|
25
|
+
@adduser_bin = session.dir_structures[:sandbox].internal(:app, :as, "wildfly-8.1.0.Final", "bin", "add-user.sh")
|
26
|
+
|
27
|
+
additional_param = ''
|
28
|
+
case @user_type
|
29
|
+
when :management
|
30
|
+
additional_param = ''
|
31
|
+
when :application
|
32
|
+
additional_param = '-a'
|
33
|
+
else
|
34
|
+
raise "unkonwn user type #{@user_type.to_s}"
|
35
|
+
end
|
36
|
+
|
37
|
+
super("sudo -u wildfly #{@adduser_bin} --user #{user_name} --password #{password} --enable --confirm-warning --silent #{additional_param}",
|
38
|
+
{good_exit: [0]})
|
39
|
+
end
|
40
|
+
|
41
|
+
def on_line(type, line)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "log4r"
|
2
|
+
require "vagrant/plugin/manager"
|
3
|
+
require "vagrant/util/platform"
|
4
|
+
require_relative "../system_command"
|
5
|
+
|
6
|
+
|
7
|
+
module VagrantPlugins
|
8
|
+
module ECSandbox
|
9
|
+
module Util
|
10
|
+
module Sandbox
|
11
|
+
module Wildfly
|
12
|
+
class Deploy < VagrantPlugins::ECSandbox::Util::Sandbox::SystemCommand
|
13
|
+
def self.execute(wildfly_home, artifact_path, server_group, env)
|
14
|
+
new(wildfly_home, artifact_path, server_group).execute(env)
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(wildfly_home, artifact_path, server_group)
|
18
|
+
super("sudo -u wildfly #{wildfly_home}/bin/jboss-cli.sh --connect --command=\"deploy --server-groups=#{server_group} #{artifact_path}\"")
|
19
|
+
end
|
20
|
+
|
21
|
+
def on_line(type, line)
|
22
|
+
@result ||= []
|
23
|
+
puts line
|
24
|
+
end
|
25
|
+
|
26
|
+
def on_end(result_code)
|
27
|
+
@result ||= []
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|