masamune 0.17.15 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/masamune/actions/aws_emr.rb +5 -5
- data/lib/masamune/actions/hadoop_filesystem.rb +1 -1
- data/lib/masamune/actions/hadoop_streaming.rb +3 -3
- data/lib/masamune/actions/hive.rb +5 -5
- data/lib/masamune/actions/postgres.rb +5 -5
- data/lib/masamune/actions/s3cmd.rb +1 -1
- data/lib/masamune/cached_filesystem.rb +1 -1
- data/lib/masamune/commands/aws_emr.rb +11 -11
- data/lib/masamune/commands/hadoop_filesystem.rb +8 -8
- data/lib/masamune/commands/hadoop_streaming.rb +2 -2
- data/lib/masamune/commands/hive.rb +19 -19
- data/lib/masamune/commands/postgres.rb +19 -19
- data/lib/masamune/commands/postgres_admin.rb +13 -13
- data/lib/masamune/commands/s3cmd.rb +7 -7
- data/lib/masamune/configuration.rb +36 -52
- data/lib/masamune/environment.rb +4 -3
- data/lib/masamune/method_logger.rb +4 -0
- data/lib/masamune/schema/store.rb +17 -5
- data/lib/masamune/thor.rb +1 -3
- data/lib/masamune/version.rb +1 -1
- data/spec/masamune/actions/aws_emr_spec.rb +4 -4
- data/spec/masamune/actions/hadoop_filesystem_spec.rb +1 -1
- data/spec/masamune/actions/hadoop_streaming_spec.rb +5 -5
- data/spec/masamune/actions/hive_spec.rb +4 -4
- data/spec/masamune/actions/postgres_spec.rb +2 -2
- data/spec/masamune/actions/s3cmd_spec.rb +1 -1
- data/spec/masamune/commands/aws_emr_spec.rb +1 -1
- data/spec/masamune/commands/hadoop_filesystem_spec.rb +1 -1
- data/spec/masamune/commands/hadoop_streaming_spec.rb +1 -1
- data/spec/masamune/commands/hive_spec.rb +1 -1
- data/spec/masamune/commands/postgres_admin_spec.rb +15 -2
- data/spec/masamune/commands/postgres_spec.rb +1 -1
- data/spec/masamune/commands/s3cmd_spec.rb +1 -1
- data/spec/masamune/configuration_spec.rb +96 -1
- data/spec/masamune/environment_spec.rb +28 -1
- data/spec/masamune/schema/catalog_spec.rb +1 -1
- data/spec/masamune/tasks/aws_emr_thor_spec.rb +2 -2
- data/spec/masamune/tasks/hive_thor_spec.rb +7 -7
- data/spec/masamune/tasks/postgres_thor_spec.rb +4 -4
- data/spec/masamune/tasks/shell_thor_spec.rb +1 -1
- data/spec/masamune/thor_spec.rb +8 -13
- data/spec/support/masamune/example_group.rb +4 -3
- data/spec/support/masamune/job_example_group.rb +26 -27
- data/spec/support/masamune/mock_command.rb +3 -3
- data/spec/support/masamune/shared_example_group.rb +8 -10
- data/spec/support/masamune/step_example_group.rb +25 -28
- data/spec/support/masamune/task_example_group.rb +75 -28
- data/spec/support/masamune/thor_mute.rb +4 -2
- data/spec/support/rspec/example/action_example_group.rb +5 -3
- data/spec/support/rspec/example/task_example_group.rb +4 -67
- data/spec/support/rspec/example/transform_example_group.rb +7 -5
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78cc6a05c7d3d967eb2f5f66a89c9b2eb4d22bca
|
4
|
+
data.tar.gz: 7c2ae67465453c5064819aa16338ed2b1b73a656
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b4b73612c75ca6e73f4ecc49b68d034cae34acbfa4359f5588ab51dcfea2878e7890988fa5abca21d515b90d048005ec4a5282c6f306117c2e430e44b2061a8
|
7
|
+
data.tar.gz: a5d0c3525357265e77f5fdc09bcf6a0f2af9e9c81262d4bfed1bb1d809c7fb407704c7f68db2ad9ccb281d5c58ba075aa38c2c4f31fc45f3c6ed4def9cdf63e7
|
@@ -28,14 +28,14 @@ module Masamune::Actions
|
|
28
28
|
opts = opts.to_hash.symbolize_keys
|
29
29
|
|
30
30
|
command = Masamune::Commands::AwsEmr.new(environment, opts)
|
31
|
-
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.aws_emr.slice(:retries, :backoff).merge(opts))
|
31
|
+
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.commands.aws_emr.slice(:retries, :backoff).merge(opts))
|
32
32
|
command = Masamune::Commands::Shell.new(command, opts)
|
33
33
|
|
34
34
|
command.interactive? ? command.replace : command.execute
|
35
35
|
end
|
36
36
|
|
37
37
|
def validate_cluster_id!
|
38
|
-
cluster_id = configuration.aws_emr[:cluster_id]
|
38
|
+
cluster_id = configuration.commands.aws_emr[:cluster_id]
|
39
39
|
raise ::Thor::RequiredArgumentMissingError, "No value provided for required options '--cluster-id'" unless cluster_id
|
40
40
|
raise ::Thor::RequiredArgumentMissingError, %(AWS EMR cluster '#{cluster_id}' does not exist) unless aws_emr(action: 'describe-cluster', cluster_id: cluster_id, fail_fast: false).success?
|
41
41
|
end
|
@@ -43,9 +43,9 @@ module Masamune::Actions
|
|
43
43
|
included do |base|
|
44
44
|
base.class_option :cluster_id, desc: 'AWS EMR cluster_id ID (Hint: `masamune-emr-aws list-clusters`)' if defined?(base.class_option)
|
45
45
|
base.after_initialize(:early) do |thor, options|
|
46
|
-
next unless thor.configuration.aws_emr.any?
|
47
|
-
next unless thor.configuration.aws_emr.fetch(:enabled, true)
|
48
|
-
thor.configuration.aws_emr[:cluster_id] = options[:cluster_id] if options[:cluster_id]
|
46
|
+
next unless thor.configuration.commands.aws_emr.any?
|
47
|
+
next unless thor.configuration.commands.aws_emr.fetch(:enabled, true)
|
48
|
+
thor.configuration.commands.aws_emr[:cluster_id] = options[:cluster_id] if options[:cluster_id]
|
49
49
|
next unless options[:initialize]
|
50
50
|
thor.validate_cluster_id!
|
51
51
|
end if defined?(base.after_initialize)
|
@@ -30,7 +30,7 @@ module Masamune::Actions
|
|
30
30
|
opts[:block] = block.to_proc if block_given?
|
31
31
|
|
32
32
|
command = Masamune::Commands::HadoopFilesystem.new(environment, opts)
|
33
|
-
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.hadoop_filesystem.slice(:retries, :backoff).merge(opts))
|
33
|
+
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.commands.hadoop_filesystem.slice(:retries, :backoff).merge(opts))
|
34
34
|
command = Masamune::Commands::Shell.new(command, opts)
|
35
35
|
|
36
36
|
command.execute
|
@@ -26,8 +26,8 @@ module Masamune::Actions
|
|
26
26
|
opts = opts.to_hash.symbolize_keys
|
27
27
|
|
28
28
|
command = Masamune::Commands::HadoopStreaming.new(environment, aws_emr_options(opts))
|
29
|
-
command = Masamune::Commands::AwsEmr.new(command, opts.except(:extra)) if configuration.aws_emr[:cluster_id]
|
30
|
-
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.hadoop_streaming.slice(:retries, :backoff).merge(opts))
|
29
|
+
command = Masamune::Commands::AwsEmr.new(command, opts.except(:extra)) if configuration.commands.aws_emr[:cluster_id]
|
30
|
+
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.commands.hadoop_streaming.slice(:retries, :backoff).merge(opts))
|
31
31
|
command = Masamune::Commands::Shell.new(command, opts)
|
32
32
|
|
33
33
|
command.execute
|
@@ -36,7 +36,7 @@ module Masamune::Actions
|
|
36
36
|
private
|
37
37
|
|
38
38
|
def aws_emr_options(opts = {})
|
39
|
-
return opts unless configuration.aws_emr[:cluster_id]
|
39
|
+
return opts unless configuration.commands.aws_emr[:cluster_id]
|
40
40
|
opts.merge(quote: true, upload: false)
|
41
41
|
end
|
42
42
|
end
|
@@ -33,8 +33,8 @@ module Masamune::Actions
|
|
33
33
|
opts[:block] = block.to_proc if block_given?
|
34
34
|
|
35
35
|
command = Masamune::Commands::Hive.new(environment, opts)
|
36
|
-
command = Masamune::Commands::AwsEmr.new(command, opts.except(:extra)) if configuration.aws_emr[:cluster_id]
|
37
|
-
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.hive.slice(:retries, :backoff).merge(opts))
|
36
|
+
command = Masamune::Commands::AwsEmr.new(command, opts.except(:extra)) if configuration.commands.aws_emr[:cluster_id]
|
37
|
+
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.commands.hive.slice(:retries, :backoff).merge(opts))
|
38
38
|
command = Masamune::Commands::Shell.new(command, opts)
|
39
39
|
|
40
40
|
command.interactive? ? command.replace : command.execute
|
@@ -42,10 +42,10 @@ module Masamune::Actions
|
|
42
42
|
|
43
43
|
# TODO: warn or error if database is not defined
|
44
44
|
def create_hive_database_if_not_exists
|
45
|
-
return if configuration.hive[:database] == 'default'
|
45
|
+
return if configuration.commands.hive[:database] == 'default'
|
46
46
|
sql = []
|
47
|
-
sql << %(CREATE DATABASE IF NOT EXISTS #{configuration.hive[:database]})
|
48
|
-
sql << %(LOCATION "#{configuration.hive[:location]}") if configuration.hive[:location]
|
47
|
+
sql << %(CREATE DATABASE IF NOT EXISTS #{configuration.commands.hive[:database]})
|
48
|
+
sql << %(LOCATION "#{configuration.commands.hive[:location]}") if configuration.commands.hive[:location]
|
49
49
|
hive(exec: sql.join(' ') + ';', database: nil)
|
50
50
|
end
|
51
51
|
|
@@ -35,24 +35,24 @@ module Masamune::Actions
|
|
35
35
|
opts[:block] = block.to_proc if block_given?
|
36
36
|
|
37
37
|
command = Masamune::Commands::Postgres.new(environment, opts)
|
38
|
-
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.postgres.slice(:retries, :backoff).merge(opts))
|
38
|
+
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.commands.postgres.slice(:retries, :backoff).merge(opts))
|
39
39
|
command = Masamune::Commands::Shell.new(command, opts)
|
40
40
|
|
41
41
|
command.interactive? ? command.replace : command.execute
|
42
42
|
end
|
43
43
|
|
44
44
|
def create_postgres_database_if_not_exists
|
45
|
-
if configuration.postgres.key?(:database)
|
46
|
-
postgres_admin(action: :create, database: configuration.postgres[:database], safe: true) unless postgres_helper.database_exists?
|
45
|
+
if configuration.commands.postgres.key?(:database)
|
46
|
+
postgres_admin(action: :create, database: configuration.commands.postgres[:database], safe: true) unless postgres_helper.database_exists?
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
def load_postgres_setup_files
|
51
|
-
configuration.postgres[:setup_files].each do |file|
|
51
|
+
configuration.commands.postgres[:setup_files].each do |file|
|
52
52
|
configuration.with_quiet do
|
53
53
|
postgres(file: file, retries: 0)
|
54
54
|
end
|
55
|
-
end if configuration.postgres.key?(:setup_files)
|
55
|
+
end if configuration.commands.postgres.key?(:setup_files)
|
56
56
|
end
|
57
57
|
|
58
58
|
def load_postgres_schema
|
@@ -33,7 +33,7 @@ module Masamune::Actions
|
|
33
33
|
opts[:block] = block.to_proc if block_given?
|
34
34
|
|
35
35
|
command = Masamune::Commands::S3Cmd.new(environment, opts)
|
36
|
-
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.s3cmd.slice(:retries, :backoff).merge(opts))
|
36
|
+
command = Masamune::Commands::RetryWithBackoff.new(command, configuration.commands.s3cmd.slice(:retries, :backoff).merge(opts))
|
37
37
|
command = Masamune::Commands::Shell.new(command, opts)
|
38
38
|
|
39
39
|
command.execute
|
@@ -29,19 +29,19 @@ module Masamune::Commands
|
|
29
29
|
include Masamune::Actions::Execute
|
30
30
|
|
31
31
|
DEFAULT_ATTRIBUTES =
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
{
|
33
|
+
path: 'aws',
|
34
|
+
extra: [],
|
35
|
+
config_file: nil,
|
36
|
+
action: nil,
|
37
|
+
cluster_id: nil,
|
38
|
+
interactive: false
|
39
|
+
}.with_indifferent_access.freeze
|
40
40
|
|
41
41
|
def initialize(delegate, attrs = {})
|
42
42
|
super delegate
|
43
43
|
@delegate = delegate
|
44
|
-
DEFAULT_ATTRIBUTES.merge(configuration.aws_emr).merge(attrs).each do |name, value|
|
44
|
+
DEFAULT_ATTRIBUTES.merge(configuration.commands.aws_emr).merge(attrs).each do |name, value|
|
45
45
|
instance_variable_set("@#{name}", value)
|
46
46
|
end
|
47
47
|
end
|
@@ -104,7 +104,7 @@ module Masamune::Commands
|
|
104
104
|
end
|
105
105
|
|
106
106
|
def handle_stdout(line, line_no)
|
107
|
-
if line_no
|
107
|
+
if line_no.zero? && line.start_with?('ssh') && @delegate.respond_to?(:handle_stderr)
|
108
108
|
@delegate.handle_stderr(line, line_no)
|
109
109
|
elsif @delegate.respond_to?(:handle_stdout)
|
110
110
|
@delegate.handle_stdout(line, line_no)
|
@@ -118,7 +118,7 @@ module Masamune::Commands
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def action_options
|
121
|
-
configuration.aws_emr.fetch(action.underscore.to_sym, {}).with_indifferent_access.fetch(:options, {}).reject { |key, _| @extra.include?(key.to_s) }
|
121
|
+
configuration.commands.aws_emr.fetch(action.underscore.to_sym, {}).with_indifferent_access.fetch(:options, {}).reject { |key, _| @extra.include?(key.to_s) }
|
122
122
|
end
|
123
123
|
|
124
124
|
def ssh_command?
|
@@ -25,17 +25,17 @@ require 'delegate'
|
|
25
25
|
module Masamune::Commands
|
26
26
|
class HadoopFilesystem < SimpleDelegator
|
27
27
|
DEFAULT_ATTRIBUTES =
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
28
|
+
{
|
29
|
+
path: 'hadoop',
|
30
|
+
options: [],
|
31
|
+
extra: [],
|
32
|
+
block: nil,
|
33
|
+
print: false
|
34
|
+
}.with_indifferent_access.freeze
|
35
35
|
|
36
36
|
def initialize(delegate, attrs = {})
|
37
37
|
super delegate
|
38
|
-
DEFAULT_ATTRIBUTES.merge(configuration.hadoop_filesystem).merge(attrs).each do |name, value|
|
38
|
+
DEFAULT_ATTRIBUTES.merge(configuration.commands.hadoop_filesystem).merge(attrs).each do |name, value|
|
39
39
|
instance_variable_set("@#{name}", value)
|
40
40
|
end
|
41
41
|
end
|
@@ -49,13 +49,13 @@ module Masamune::Commands
|
|
49
49
|
extra: [],
|
50
50
|
upload: true,
|
51
51
|
quote: false
|
52
|
-
}.freeze
|
52
|
+
}.with_indifferent_access.freeze
|
53
53
|
|
54
54
|
attr_reader :input
|
55
55
|
|
56
56
|
def initialize(delegate, attrs = {})
|
57
57
|
super delegate
|
58
|
-
DEFAULT_ATTRIBUTES.merge(configuration.hadoop_streaming).merge(attrs).each do |name, value|
|
58
|
+
DEFAULT_ATTRIBUTES.merge(configuration.commands.hadoop_streaming).merge(attrs).each do |name, value|
|
59
59
|
instance_variable_set("@#{name}", value)
|
60
60
|
end
|
61
61
|
@input = Array.wrap(@input)
|
@@ -33,28 +33,28 @@ module Masamune::Commands
|
|
33
33
|
PROMPT = 'hive>'.freeze
|
34
34
|
|
35
35
|
DEFAULT_ATTRIBUTES =
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
36
|
+
{
|
37
|
+
path: 'hive',
|
38
|
+
options: [],
|
39
|
+
database: 'default',
|
40
|
+
setup_files: [],
|
41
|
+
schema_files: [],
|
42
|
+
file: nil,
|
43
|
+
exec: nil,
|
44
|
+
output: nil,
|
45
|
+
print: false,
|
46
|
+
block: nil,
|
47
|
+
variables: {},
|
48
|
+
buffer: nil,
|
49
|
+
service: false,
|
50
|
+
delimiter: "\001",
|
51
|
+
csv: false,
|
52
|
+
debug: false
|
53
|
+
}.with_indifferent_access.freeze
|
54
54
|
|
55
55
|
def initialize(delegate, attrs = {})
|
56
56
|
super delegate
|
57
|
-
DEFAULT_ATTRIBUTES.merge(configuration.hive).merge(attrs).each do |name, value|
|
57
|
+
DEFAULT_ATTRIBUTES.merge(configuration.commands.hive).merge(attrs).each do |name, value|
|
58
58
|
instance_variable_set("@#{name}", value)
|
59
59
|
end
|
60
60
|
raise ArgumentError, 'Cannot specify both file and exec' if @file && @exec
|
@@ -31,28 +31,28 @@ module Masamune::Commands
|
|
31
31
|
include Masamune::Commands::PostgresCommon
|
32
32
|
|
33
33
|
DEFAULT_ATTRIBUTES =
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
34
|
+
{
|
35
|
+
path: 'psql',
|
36
|
+
options: [],
|
37
|
+
hostname: 'localhost',
|
38
|
+
database: 'postgres',
|
39
|
+
username: 'postgres',
|
40
|
+
pgpass_file: nil,
|
41
|
+
file: nil,
|
42
|
+
exec: nil,
|
43
|
+
input: nil,
|
44
|
+
output: nil,
|
45
|
+
print: false,
|
46
|
+
block: nil,
|
47
|
+
csv: false,
|
48
|
+
variables: {},
|
49
|
+
tuple_output: false,
|
50
|
+
debug: false
|
51
|
+
}.with_indifferent_access.freeze
|
52
52
|
|
53
53
|
def initialize(delegate, attrs = {})
|
54
54
|
super delegate
|
55
|
-
DEFAULT_ATTRIBUTES.merge(configuration.postgres).merge(attrs).each do |name, value|
|
55
|
+
DEFAULT_ATTRIBUTES.merge(configuration.commands.postgres).merge(attrs).each do |name, value|
|
56
56
|
instance_variable_set("@#{name}", value)
|
57
57
|
end
|
58
58
|
raise ArgumentError, 'Cannot specify both file and exec' if @file && @exec
|
@@ -29,22 +29,22 @@ module Masamune::Commands
|
|
29
29
|
include Masamune::Commands::PostgresCommon
|
30
30
|
|
31
31
|
DEFAULT_ATTRIBUTES =
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
32
|
+
{
|
33
|
+
create_db_path: 'createdb',
|
34
|
+
drop_db_path: 'dropdb',
|
35
|
+
pg_dump_path: 'pg_dump',
|
36
|
+
options: [],
|
37
|
+
hostname: 'localhost',
|
38
|
+
username: 'postgres',
|
39
|
+
pgpass_file: nil,
|
40
|
+
action: nil,
|
41
|
+
database: nil,
|
42
|
+
output: nil
|
43
|
+
}.with_indifferent_access.freeze
|
44
44
|
|
45
45
|
def initialize(delegate, attrs = {})
|
46
46
|
super delegate
|
47
|
-
DEFAULT_ATTRIBUTES.merge(configuration.postgres).merge(configuration.postgres_admin).merge(attrs).each do |name, value|
|
47
|
+
DEFAULT_ATTRIBUTES.merge(configuration.commands.postgres).merge(configuration.commands.postgres_admin).merge(attrs).each do |name, value|
|
48
48
|
instance_variable_set("@#{name}", value)
|
49
49
|
end
|
50
50
|
end
|
@@ -25,16 +25,16 @@ require 'delegate'
|
|
25
25
|
module Masamune::Commands
|
26
26
|
class S3Cmd < SimpleDelegator
|
27
27
|
DEFAULT_ATTRIBUTES =
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
{
|
29
|
+
path: 's3cmd',
|
30
|
+
options: [],
|
31
|
+
extra: [],
|
32
|
+
block: nil
|
33
|
+
}.with_indifferent_access.freeze
|
34
34
|
|
35
35
|
def initialize(delegate, attrs = {})
|
36
36
|
super delegate
|
37
|
-
DEFAULT_ATTRIBUTES.merge(configuration.s3cmd).merge(attrs).each do |name, value|
|
37
|
+
DEFAULT_ATTRIBUTES.merge(configuration.commands.s3cmd).merge(attrs).each do |name, value|
|
38
38
|
instance_variable_set("@#{name}", value)
|
39
39
|
end
|
40
40
|
end
|
@@ -26,43 +26,45 @@ require 'tilt/erb'
|
|
26
26
|
require 'pp'
|
27
27
|
|
28
28
|
require 'active_support/core_ext/hash'
|
29
|
+
require 'hashie'
|
29
30
|
|
30
31
|
require 'masamune/has_environment'
|
31
32
|
|
32
|
-
class Masamune::Configuration
|
33
|
+
class Masamune::Configuration < Hashie::Dash
|
33
34
|
extend Forwardable
|
34
|
-
include Masamune::HasEnvironment
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
define_method(command) do
|
49
|
-
instance_variable_get("@#{command}").symbolize_keys!
|
36
|
+
include Hashie::Extensions::MergeInitializer
|
37
|
+
include Hashie::Extensions::IndifferentAccess
|
38
|
+
|
39
|
+
class << self
|
40
|
+
attr_writer :default_config_file
|
41
|
+
|
42
|
+
def default_config_file
|
43
|
+
@default_config_file ||= File.join(File.expand_path('../../../', __FILE__), 'config', 'masamune.yml.erb')
|
44
|
+
end
|
45
|
+
|
46
|
+
def default_commands
|
47
|
+
@default_commands ||= %i(aws_emr hive hadoop_streaming hadoop_filesystem s3cmd postgres postgres_admin)
|
50
48
|
end
|
51
49
|
end
|
52
50
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
51
|
+
property :environment
|
52
|
+
include Masamune::HasEnvironment
|
53
|
+
|
54
|
+
property :quiet, default: false
|
55
|
+
property :verbose, default: false
|
56
|
+
property :debug, default: false
|
57
|
+
property :dry_run, default: false
|
58
|
+
property :lock
|
59
|
+
property :retries, default: 3
|
60
|
+
property :backoff, default: 5
|
61
|
+
property :params, default: Hashie::Mash.new
|
62
|
+
property :commands, default: Hashie::Mash.new { |h, k| h[k] = Hashie::Mash.new }
|
63
|
+
|
64
|
+
def initialize(*a)
|
65
|
+
super
|
66
|
+
self.class.default_commands.each do |command|
|
67
|
+
commands[command] = Hashie::Mash.new
|
66
68
|
end
|
67
69
|
end
|
68
70
|
|
@@ -70,8 +72,8 @@ class Masamune::Configuration
|
|
70
72
|
@load_once ||= begin
|
71
73
|
config_file = filesystem.eval_path(path)
|
72
74
|
load_yaml_erb_file(config_file).each_pair do |command, value|
|
73
|
-
if
|
74
|
-
|
75
|
+
if command == 'commands'
|
76
|
+
commands.merge!(value)
|
75
77
|
elsif command == 'paths'
|
76
78
|
load_paths(value)
|
77
79
|
elsif command == 'params'
|
@@ -80,8 +82,8 @@ class Masamune::Configuration
|
|
80
82
|
end
|
81
83
|
end
|
82
84
|
logger.debug("Loaded configuration #{config_file}")
|
83
|
-
load_catalog(configuration.postgres.fetch(:schema_files, []) + configuration.hive.fetch(:schema_files, []))
|
84
|
-
|
85
|
+
load_catalog(configuration.commands.postgres.fetch(:schema_files, []) + configuration.commands.hive.fetch(:schema_files, []))
|
86
|
+
self
|
85
87
|
end
|
86
88
|
end
|
87
89
|
|
@@ -95,18 +97,8 @@ class Masamune::Configuration
|
|
95
97
|
end
|
96
98
|
end
|
97
99
|
|
98
|
-
def to_s
|
99
|
-
io = StringIO.new
|
100
|
-
rep = { 'path' => filesystem.paths }
|
101
|
-
COMMANDS.each do |command|
|
102
|
-
rep[command] = send(command)
|
103
|
-
end
|
104
|
-
PP.pp(rep, io)
|
105
|
-
io.string
|
106
|
-
end
|
107
|
-
|
108
100
|
def debug=(debug)
|
109
|
-
|
101
|
+
self[:debug] = debug
|
110
102
|
environment.reload_logger!
|
111
103
|
end
|
112
104
|
|
@@ -135,14 +127,6 @@ class Masamune::Configuration
|
|
135
127
|
YAML.load(t.result(binding))
|
136
128
|
end
|
137
129
|
|
138
|
-
class << self
|
139
|
-
attr_writer :default_config_file
|
140
|
-
|
141
|
-
def default_config_file
|
142
|
-
@default_config_file ||= File.join(File.expand_path('../../../', __FILE__), 'config', 'masamune.yml.erb')
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
130
|
def default_config_file
|
147
131
|
self.class.default_config_file
|
148
132
|
end
|