panoramix 0.7.15 → 0.7.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -30,7 +30,7 @@ module Panoramix
30
30
  end
31
31
 
32
32
  def shell(cmd, silent=false, env=Hash.new)
33
- puts "Running #{cmd}".magenta if ENV["VERBOSE"]
33
+ puts "Running #{cmd} ENV=#{env}".magenta if ENV["VERBOSE"]
34
34
 
35
35
  @err = ""
36
36
  @out = ""
@@ -6,10 +6,13 @@ module Panoramix
6
6
  class DockerBuild < DockerImageBase
7
7
 
8
8
  attr_reader :src
9
+ attr_reader :env
9
10
 
10
- def initialize(dst, src)
11
- super(dst)
11
+ def initialize(dst, src, host)
12
+ super(dst, host)
12
13
  @src = src
14
+ @env = Hash.new
15
+ @env["DOCKER_HOST"] = "tcp://#{host}" if host
13
16
  end
14
17
 
15
18
  # When this instance needs to be executed
@@ -20,7 +23,7 @@ module Panoramix
20
23
 
21
24
  # Default action for this task
22
25
  def run_default
23
- shell "docker build -t #{dst} #{File.dirname(@src)}"
26
+ shell("docker build -t #{dst} #{File.dirname(@src)}", false, @env)
24
27
  end
25
28
 
26
29
  def ps
@@ -56,6 +59,9 @@ def docker_build(args, &block)
56
59
  raise message
57
60
  end
58
61
 
62
+ # Select the host
63
+ host = config.fetch(:host, nil)
64
+
59
65
  # Select provided dependencies
60
66
  prerequisites = args[name].select { |d| ! d.is_a? Hash }
61
67
 
@@ -63,7 +69,7 @@ def docker_build(args, &block)
63
69
  prerequisites = prerequisites.push(dockerfile) unless dockerfile.nil?
64
70
  prerequisites.flatten!
65
71
 
66
- instance = Panoramix::Plugin::DockerBuild.new(name, dockerfile)
72
+ instance = Panoramix::Plugin::DockerBuild.new(name, dockerfile, host)
67
73
 
68
74
  descriptions = I18n.t('docker_build')
69
75
  descriptions = Hash.new if descriptions.class != Hash
@@ -6,10 +6,13 @@ module Panoramix
6
6
  class DockerImage < DockerImageBase
7
7
 
8
8
  attr_reader :src
9
+ attr_reader :env
9
10
 
10
- def initialize(dst, src)
11
- super(dst)
11
+ def initialize(dst, src, host)
12
+ super(dst, host)
12
13
  @src = src
14
+ @env = Hash.new
15
+ @env["DOCKER_HOST"] = "tcp://#{host}" if host
13
16
  end
14
17
 
15
18
  # When this instance needs to be executed
@@ -19,13 +22,13 @@ module Panoramix
19
22
 
20
23
  # Default action for this task
21
24
  def run_default
22
- shell "docker pull #{@src}" unless ENV["NO_PULL"]
25
+ shell("docker pull #{@src}", false, @env) unless ENV["NO_PULL"]
23
26
 
24
27
  # Tag image with required tag
25
- shell "docker tag #{@src} #{@dst}"
28
+ shell("docker tag #{@src} #{@dst}", false, @env)
26
29
 
27
30
  # Remove origin image
28
- shell "docker rmi #{@src}"
31
+ shell("docker rmi #{@src}", false, @env)
29
32
  end
30
33
 
31
34
  def ps
@@ -42,9 +45,11 @@ def external_docker_image(args, block)
42
45
  name = args.keys[0]
43
46
  src = args[name][:dockerimage] || args[name][:docker]
44
47
 
48
+ host = args[name][:host] || nil
49
+
45
50
  prerequisites = []
46
51
 
47
- instance = Panoramix::Plugin::DockerImage.new(name, src)
52
+ instance = Panoramix::Plugin::DockerImage.new(name, src, host)
48
53
 
49
54
  descriptions = I18n.t('docker_image')
50
55
  descriptions = Hash.new if descriptions.class != Hash
@@ -7,10 +7,14 @@ module Panoramix
7
7
  class DockerImageBase < Base
8
8
 
9
9
  attr_reader :dst
10
+ attr_reader :tag
11
+ attr_reader :env
10
12
 
11
- def initialize(dst)
13
+ def initialize(dst, host)
12
14
  @dst = dst
13
15
  @tag = "latest"
16
+ @env = Hash.new
17
+ @env["DOCKER_HOST"] = "tcp://#{host}" if host
14
18
  end
15
19
 
16
20
  # Return timestamp of the image
@@ -19,7 +23,7 @@ module Panoramix
19
23
  if info
20
24
  # Get image timestamp
21
25
  id = info.split(" ")[0]
22
- time = shell("docker inspect -f {{.Created}} #{id}", true)[:out]
26
+ time = shell("docker inspect -f {{.Created}} #{id}", true, @env)[:out]
23
27
  return Time.parse(time)
24
28
  else
25
29
  return Time.at 0
@@ -30,7 +34,7 @@ module Panoramix
30
34
  def created?
31
35
  return @created if @created
32
36
 
33
- info = shell("docker images", true)[:out]
37
+ info = shell("docker images", true, @env)[:out]
34
38
 
35
39
  images_list = info.split("\n")
36
40
  images_list.shift
@@ -44,7 +48,7 @@ module Panoramix
44
48
  info = created?
45
49
  if info
46
50
  id = info.split(" ")[0]
47
- shell "docker rmi -f #{id}"
51
+ shell("docker rmi -f #{id}", false, @env)
48
52
  end
49
53
  end
50
54
 
@@ -12,10 +12,13 @@ module Panoramix
12
12
  attr_reader :src
13
13
  attr_reader :env
14
14
 
15
- def initialize(dst, src, env)
15
+ def initialize(dst, src, env, host)
16
16
  @dst = dst
17
17
  @src = src
18
18
  @env = env
19
+
20
+ @env = parse_env @env.keys
21
+ @env["DOCKER_HOST"] = "tcp://#{host}" unless host.nil?
19
22
  end
20
23
 
21
24
  # Return current timestamp for the container
@@ -54,7 +57,6 @@ module Panoramix
54
57
 
55
58
  # Default action for this task
56
59
  def run_default
57
- @env = parse_env @env.keys
58
60
  # Raise an exception if already has been created
59
61
  if created?
60
62
  message = I18n.t('errors.docker_up.cluster_deployed', {:id => @dst})
@@ -108,7 +110,7 @@ module Panoramix
108
110
  puts "Service: #{@dst}"
109
111
  if created?
110
112
  puts "Timestamp: #{timestamp}"
111
- info = shell("docker-compose -p #{@dst} -f #{@src} ps", true, @env)[:out]
113
+ info = shell("#{@compose} -p #{@dst} -f #{@src} ps", true, @env)[:out]
112
114
  puts info
113
115
  else
114
116
  puts "Timestamp: Not created"
@@ -153,11 +155,14 @@ def docker_up(args, &block)
153
155
  # Get environment
154
156
  environment = parse_env(compose_params.first[:env] || [])
155
157
 
158
+ # Select the host
159
+ host = compose_params[0].fetch(:host, nil)
160
+
156
161
  # Merge deps with the compose file_task
157
162
  prerequisites = deps.select { |d| ! d.is_a? Hash }
158
163
  prerequisites = prerequisites.push(compose)
159
164
 
160
- instance = Panoramix::Plugin::DockerUp.new(name, compose, environment)
165
+ instance = Panoramix::Plugin::DockerUp.new(name, compose, environment, host)
161
166
 
162
167
  descriptions = I18n.t('docker_up')
163
168
  descriptions = Hash.new if descriptions.class != Hash
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panoramix
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.15
4
+ version: 0.7.16
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-03-01 00:00:00.000000000 Z
12
+ date: 2016-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pry
@@ -113,25 +113,25 @@ executables: []
113
113
  extensions: []
114
114
  extra_rdoc_files: []
115
115
  files:
116
- - lib/panoramix/dsl.rb
117
- - lib/panoramix/tasks/global_tasks.rb
118
- - lib/panoramix/tasks/task_mpi.rb
119
- - lib/panoramix/tasks/actions.rb
116
+ - lib/panoramix.rb
117
+ - lib/panoramix/locale.rb
118
+ - lib/panoramix/plugin/cfn.rb
120
119
  - lib/panoramix/plugin/docker_image.rb
121
- - lib/panoramix/plugin/base.rb
122
- - lib/panoramix/plugin/env.rb
123
- - lib/panoramix/plugin/docker_image_base.rb
124
120
  - lib/panoramix/plugin/docker_up.rb
125
- - lib/panoramix/plugin/docker_build.rb
126
121
  - lib/panoramix/plugin/s3.rb
127
- - lib/panoramix/plugin/cfn.rb
128
122
  - lib/panoramix/plugin/git.rb
123
+ - lib/panoramix/plugin/base.rb
124
+ - lib/panoramix/plugin/env.rb
125
+ - lib/panoramix/plugin/docker_build.rb
126
+ - lib/panoramix/plugin/docker_image_base.rb
129
127
  - lib/panoramix/plugin/wget.rb
130
- - lib/panoramix/locale.rb
131
- - lib/panoramix/mpi.rb
128
+ - lib/panoramix/dsl.rb
132
129
  - lib/panoramix/external.rb
130
+ - lib/panoramix/tasks/task_mpi.rb
131
+ - lib/panoramix/tasks/global_tasks.rb
132
+ - lib/panoramix/tasks/actions.rb
133
+ - lib/panoramix/mpi.rb
133
134
  - lib/panoramix/panoramix_core.rb
134
- - lib/panoramix.rb
135
135
  - locales/en.yml
136
136
  homepage: https://github.com/sflyr
137
137
  licenses: