sneaql 0.0.10-java → 0.0.12-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/sneaql +16 -0
- data/lib/sneaql.rb +3 -2
- data/lib/sneaql_lib/docker.rb +59 -0
- data/lib/sneaql_lib/expressions.rb +19 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 782dd6823d85946ec67bf1f3386df376fd73fe75
|
4
|
+
data.tar.gz: 8579df76b676d3b3ad6a8cbc868940c9c98ae106
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d690724dc1c9233b4ed2377bf54c4aa43f2a5aa9c2dd4cd23ae8b112d508aea340a8df0c486fec07b6fa53d2175e2b0160c0a7f37157f31721b931b9a13cba7b
|
7
|
+
data.tar.gz: c8f1073dad3e852eb85e58758d5af6fe09093a9a9e2bd78334f1cd1764466c722e6ac3fffbbf4348911d0e84a19cece36c142005912081789c913a88e27162e6
|
data/bin/sneaql
CHANGED
@@ -268,6 +268,22 @@ the above will execute the transform in the current directory. note that sneaql
|
|
268
268
|
exit 1
|
269
269
|
end
|
270
270
|
|
271
|
+
desc "containerize PATH_TO_TRANFORM_ROOT CONTAINER_TAG", "build a docker container out of this transform"
|
272
|
+
long_desc <<-LONGDESC
|
273
|
+
builds a runnable docker image from the specified transform.
|
274
|
+
|
275
|
+
EXAMPLE \n
|
276
|
+
$ sneaql containerize . my-transform-name:0.0.1\n
|
277
|
+
the above will build a transform named my-transform-name:0.0.1 based upon the contents of the sneaql.json file in the provided (current) directory
|
278
|
+
LONGDESC
|
279
|
+
|
280
|
+
def containerize(repo_dir, container_tag)
|
281
|
+
Sneaql::Docker::LocalTransformDockerfile.new(
|
282
|
+
repo_dir,
|
283
|
+
container_tag
|
284
|
+
)
|
285
|
+
end
|
286
|
+
|
271
287
|
end
|
272
288
|
end
|
273
289
|
end
|
data/lib/sneaql.rb
CHANGED
@@ -12,6 +12,7 @@ require_relative 'sneaql_lib/expressions.rb'
|
|
12
12
|
require_relative 'sneaql_lib/recordset.rb'
|
13
13
|
require_relative 'sneaql_lib/database_manager.rb'
|
14
14
|
require_relative 'sneaql_lib/standard_db_objects.rb'
|
15
|
+
require_relative 'sneaql_lib/docker.rb'
|
15
16
|
|
16
17
|
# module for sneaql
|
17
18
|
module Sneaql
|
@@ -112,7 +113,7 @@ module Sneaql
|
|
112
113
|
@logger.info("#{@transform_name} validation time #{@end_time - @start_time}s")
|
113
114
|
@logger.info("#{@transform_name} exit code: #{@exit_code} status: #{@status}")
|
114
115
|
end
|
115
|
-
|
116
|
+
|
116
117
|
# Runs the actual transform.
|
117
118
|
def run
|
118
119
|
@expression_handler = create_expression_handler
|
@@ -155,7 +156,7 @@ module Sneaql
|
|
155
156
|
# Creates an ExpressionHandler object
|
156
157
|
# @return [Sneaql::Core::ExpressionHandler]
|
157
158
|
def create_expression_handler
|
158
|
-
Sneaql::Core::ExpressionHandler.new(
|
159
|
+
Sneaql::Core::ExpressionHandler.new(@logger)
|
159
160
|
end
|
160
161
|
|
161
162
|
# Creates a RepoDownloadManager object
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Sneaql
|
4
|
+
module Docker
|
5
|
+
class LocalTransformDockerfile
|
6
|
+
|
7
|
+
def initialize(repo_dir, repo_tag)
|
8
|
+
@repo_dir = repo_dir
|
9
|
+
@repo_tag = repo_tag
|
10
|
+
@steps = JSON.parse(
|
11
|
+
File.read("#{repo_dir}/sneaql.json")
|
12
|
+
)
|
13
|
+
|
14
|
+
create_step_files
|
15
|
+
create_dockerfile
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_step_files()
|
19
|
+
@step_files = []
|
20
|
+
@step_files << {
|
21
|
+
docker_path: 'sneaql.json',
|
22
|
+
local_path: 'sneaql.json' #File.expand_path("#{repo_dir}/sneaql.json")
|
23
|
+
}
|
24
|
+
|
25
|
+
@steps.each { |s|
|
26
|
+
@step_files << {
|
27
|
+
docker_path: s['step_file'],
|
28
|
+
local_path: s['step_file'] # File.expand_path(s['step_file'])
|
29
|
+
}
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
def dockerfile()
|
34
|
+
%{FROM sneaql:0.0.1
|
35
|
+
RUN mkdir /tmp/repo
|
36
|
+
#{@step_files.map {|s| "ADD #{s[:local_path]} /tmp/repo/#{s[:docker_path]}"}.join("\n")}
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
def create_dockerfile
|
41
|
+
Dir.chdir(@repo_dir) do
|
42
|
+
puts "creating Dockerfile..."
|
43
|
+
puts
|
44
|
+
create_step_files
|
45
|
+
puts dockerfile
|
46
|
+
f = File.open('Dockerfile', 'w')
|
47
|
+
f.puts(dockerfile)
|
48
|
+
f.close
|
49
|
+
puts
|
50
|
+
puts "building docker image..."
|
51
|
+
puts `docker build --no-cache -t #{@repo_tag} . `
|
52
|
+
#Docker::Image.build_from_dir('.')
|
53
|
+
puts
|
54
|
+
puts "image build complete"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -9,9 +9,9 @@ module Sneaql
|
|
9
9
|
class ExpressionHandler
|
10
10
|
# @param [Hash] environment_variables pass in a set of ENV
|
11
11
|
# @param [Logger] logger object otherwise will default to new Logger
|
12
|
-
def initialize(
|
12
|
+
def initialize(logger = nil)
|
13
13
|
@logger = logger ? logger : Logger.new(STDOUT)
|
14
|
-
@environment_variables =
|
14
|
+
@environment_variables = filtered_environment_variables
|
15
15
|
@session_variables = {}
|
16
16
|
end
|
17
17
|
|
@@ -233,6 +233,23 @@ module Sneaql
|
|
233
233
|
def wildcard_to_regex(wildcard)
|
234
234
|
Regexp.new("^#{wildcard}$".gsub('%','.*').gsub('_','.'))
|
235
235
|
end
|
236
|
+
|
237
|
+
# create a hash built from supplied environment variables.
|
238
|
+
# if SNEAQL_AVAILABLE_ENV_VARS is provided (as a comma delimited list)
|
239
|
+
# only the listed values are included.
|
240
|
+
# return <Hash>
|
241
|
+
def filtered_environment_variables
|
242
|
+
env_vars = {}
|
243
|
+
if ENV['SNEAQL_AVAILABLE_ENV_VARS']
|
244
|
+
@logger.debug("filtering environment variables")
|
245
|
+
available = ENV['SNEAQL_AVAILABLE_ENV_VARS'].split(',')
|
246
|
+
ENV.keys.each { |k| env_vars[k] = ENV[k] if available.include?(k) }
|
247
|
+
else
|
248
|
+
@logger.debug("setting environment variables")
|
249
|
+
ENV.keys.each { |k| env_vars[k] = ENV[k] }
|
250
|
+
end
|
251
|
+
return env_vars
|
252
|
+
end
|
236
253
|
end
|
237
254
|
end
|
238
255
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sneaql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- jeremy winters
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- lib/sneaql_lib/database_prefs/redshift.rb
|
124
124
|
- lib/sneaql_lib/database_prefs/sqlite.rb
|
125
125
|
- lib/sneaql_lib/database_prefs/vertica.rb
|
126
|
+
- lib/sneaql_lib/docker.rb
|
126
127
|
- lib/sneaql_lib/exceptions.rb
|
127
128
|
- lib/sneaql_lib/expressions.rb
|
128
129
|
- lib/sneaql_lib/lock_manager.rb
|