rbbt-image 0.1.12 → 0.1.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e88f118828855b76046ddb2986060361b3f11df7
4
- data.tar.gz: d78897244f68a6aa7c85ea793a621f981ef8a023
3
+ metadata.gz: 8123bdaafa5d69e42309938c73c1b4a5a0be39ef
4
+ data.tar.gz: aa239fa5e61c0545b9c13fe05e7f80aaaf24f807
5
5
  SHA512:
6
- metadata.gz: b28949375a40a1a29334e3dac657a5ddd985269772b128128ab001514b601d7a79dd84501d518f57368c1724edad4da157fc3f0763207a23408f5748a7bc3bda
7
- data.tar.gz: 2e2c08b1370befbb1fda04ac5c5d157753efc7ff4f56f502e2987276a7bad99e4652eb50857901e0962014c7433d19559ef2d44bf125bcbafdcc0f84f85bb49e
6
+ metadata.gz: 399d4d94aef56aad6dfb58b9e8a4683056495883cf1172b67b047649f181d44a673a162be65c027cb0bb96d3ff8d361baaad29b4e9748de48f2e922a4bbe0de7
7
+ data.tar.gz: afe7f9ce536106b0daa72f6f567dd66321c794fa741b5d9bba4fa8ca16b763cae9a7e8063f5fbfb5d53df437a2fe44d54b43e482621bc121ea20863155ca1ebf
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'rbbt-util'
4
4
  require 'rbbt/util/simpleopt'
5
+ require 'rbbt/docker'
5
6
 
6
7
  $0 = "rbbt #{$previous_commands*""} #{ File.basename(__FILE__) }" if $previous_commands
7
8
 
@@ -11,13 +12,15 @@ Runs a docker image from an infrastructure definition file
11
12
 
12
13
  $ #{ $0 } [<options>] <infrastructure.yaml> <command> <args> [-- <extra docker options>]
13
14
 
14
- Infrastruture definition comes in YAML
15
+ Infrastruture definition comes in YAML.
15
16
 
16
17
  -h--help Print this help
17
18
  --log* Log level
18
-
19
+ -d--dry_run Dry run
20
+ -n--name* Container name
19
21
  EOF
20
22
 
23
+
21
24
  Log.severity = options[:log].to_i if options[:log]
22
25
 
23
26
  module Log
@@ -31,10 +34,15 @@ infrastructure_file, cmd, *args = ARGV
31
34
 
32
35
 
33
36
  if options[:help] or infrastructure_file.nil?
34
- if defined? rbbt_usage
37
+ if false and defined? rbbt_usage
35
38
  rbbt_usage
39
+ puts Log.color :magenta, "##Example infrastructure.yaml"
40
+ puts DATA.read
36
41
  else
37
- puts SOPT.usage
42
+ puts SOPT.doc
43
+ puts
44
+ puts Log.color(:magenta, "##Example infrastructure.yaml")
45
+ puts DATA.read
38
46
  end
39
47
  exit 0
40
48
  end
@@ -47,42 +55,78 @@ end
47
55
  docker_args = args[1..-1] || []
48
56
 
49
57
  cmd_args.collect!{|a| '"' << a << '"' }
50
- docker_args.collect!{|a| '"' << a << '"' }
51
58
 
59
+ infrastructure_file = Rbbt.etc.infrastructure[infrastructure_file+'.yaml'].find unless File.exists? infrastructure_file
52
60
  infrastructure = File.open(infrastructure_file){|io| YAML.load io }
53
- IndiferentHash.setup(infrastructure)
54
-
55
- image = infrastructure[:image]
56
-
57
- if user = infrastructure[:user]
58
- user_conf = "-u #{user} -e HOME=/home/#{user}/ -e USER=#{user}"
59
- user_conf = "-e HOME=/home/#{user}/ -e USER=#{user}"
60
- else
61
- user_conf = ""
62
- end
63
-
64
- mount_conf = ""
65
- if infrastructure[:mounts]
66
- infrastructure[:mounts].each do |target,source|
67
- target = target.gsub("USER", user) if target.include? "USER"
68
- if source.nil? or source.empty?
69
- mount_conf << " -v #{target}"
70
- else
71
- FileUtils.mkdir_p source unless File.directory? source
72
- #FileUtils.chmod 0777, source
73
- mount_conf << " -v #{File.expand_path(source)}:#{target}"
74
- end
75
- end
76
- end
77
-
78
- if infrastructure[:workflow_autoinstall] and infrastructure[:workflow_autoinstall].to_s == 'true' and cmd =~ /rbbt/
79
- cmd = "env RBBT_WORKFLOW_AUTOINSTALL=true " + cmd
80
- end
81
-
82
- umask = infrastructure[:umask] ? 'umask 000; ' : ''
83
- cmd_str = "docker run #{mount_conf} #{user_conf} #{docker_args*" "} #{image} /bin/bash --login -c '#{umask}#{cmd} #{cmd_args*" "}"
84
- cmd_str += " --log #{Log.severity} " if cmd =~ /\brbbt$/
85
- cmd_str += "'"
86
61
 
87
- Log.info "Docker: \n" << cmd_str
88
- exec(cmd_str)
62
+ RbbtDocker.load_infrastructure(infrastructure, cmd, cmd_args, docker_args, options)
63
+
64
+ #docker_args.collect!{|a| '"' << a << '"' }
65
+ #
66
+ #infrastructure = File.open(infrastructure_file){|io| YAML.load io }
67
+ #IndiferentHash.setup(infrastructure)
68
+ #
69
+ #image = infrastructure[:image]
70
+ #
71
+ #if user = infrastructure[:user]
72
+ # user_conf = "-u #{user} -e HOME=/home/#{user}/ -e USER=#{user}"
73
+ # user_conf = "-e HOME=/home/#{user}/ -e USER=#{user}"
74
+ #else
75
+ # user_conf = ""
76
+ #end
77
+ #
78
+ #mount_conf = ""
79
+ #seen_mounts = {}
80
+ #if infrastructure[:mounts]
81
+ # infrastructure[:mounts].each do |target,source|
82
+ # target = target.gsub("USER", user) if target.include? "USER"
83
+ # if source.nil? or source.empty?
84
+ # mount_conf << " -v #{target}"
85
+ # else
86
+ # matches = seen_mounts.select{|starget,ssource| Misc.path_relative_to starget, target }
87
+ #
88
+ # if matches.any?
89
+ # matches.each do |starget,ssource|
90
+ # subdir = Misc.path_relative_to starget, target
91
+ # dir = File.join(ssource, File.dirname(subdir))
92
+ # if not File.directory? dir
93
+ # FileUtils.mkdir_p dir
94
+ # FileUtils.chmod 0777, dir
95
+ # end
96
+ # end
97
+ #
98
+ # end
99
+ #
100
+ # if not File.directory? source
101
+ # FileUtils.mkdir_p source
102
+ # FileUtils.chmod 0777, source
103
+ # end
104
+ # seen_mounts[target] = source
105
+ # mount_conf << " -v #{File.expand_path(source)}:#{target}"
106
+ # end
107
+ # end
108
+ #end
109
+ #
110
+ #if infrastructure[:workflow_autoinstall] and infrastructure[:workflow_autoinstall].to_s == 'true' and cmd =~ /rbbt/
111
+ # cmd = "env RBBT_WORKFLOW_AUTOINSTALL=true " + cmd
112
+ #end
113
+ #
114
+ #umask = infrastructure[:umask] ? 'umask 000; ' : ''
115
+ #cmd_str = "docker run #{mount_conf} #{user_conf} #{docker_args*" "} #{image} /bin/bash --login -c '#{umask}#{cmd} #{cmd_args*" "}"
116
+ #cmd_str += " --log #{Log.severity} " if cmd =~ /\brbbt$/
117
+ #cmd_str += "'"
118
+ #
119
+ #Log.info "Docker: \n" << cmd_str
120
+ #exec(cmd_str) unless options[:dry_run]
121
+
122
+ __END__
123
+ image: mikisvaz/rbbt-basic
124
+ user: rbbt
125
+ umask: true
126
+ workflow_autoinstall: true
127
+ mounts:
128
+ /home/USER/.rbbt/: ./.rbbt
129
+ /home/USER/.rbbt/share/databases: /data3/rbbt/share/databases
130
+ /home/USER/.rbbt/share/organisms: /data3/rbbt/share/organisms
131
+ /home/USER/.rbbt/var/dbNSFP: /data3/rbbt/var/dbNSFP
132
+ /home/USER/.rbbt/var/DbSNP: /data3/rbbt/var/DbSNP
@@ -0,0 +1,66 @@
1
+ module RbbtDocker
2
+ def self.load_infrastructure(infrastructure, cmd, cmd_args = [], docker_args = [], options = {})
3
+ cmd_args.collect!{|a| '"' << a << '"' }
4
+ docker_args.collect!{|a| '"' << a << '"' }
5
+
6
+
7
+ IndiferentHash.setup(infrastructure)
8
+
9
+ image = infrastructure[:image]
10
+
11
+ if user = infrastructure[:user]
12
+ user_conf = "-u #{user} -e HOME=/home/#{user}/ -e USER=#{user}"
13
+ user_conf = "-e HOME=/home/#{user}/ -e USER=#{user}"
14
+ else
15
+ user_conf = ""
16
+ end
17
+
18
+ mount_conf = ""
19
+ seen_mounts = {}
20
+ if infrastructure[:mounts]
21
+ infrastructure[:mounts].each do |target,source|
22
+ target = target.gsub("USER", user) if target.include? "USER"
23
+ if source.nil? or source.empty?
24
+ mount_conf << " --volumes-from #{target}"
25
+ else
26
+ matches = seen_mounts.select{|starget,ssource| Misc.path_relative_to starget, target }
27
+
28
+ if matches.any?
29
+ matches.each do |starget,ssource|
30
+ subdir = Misc.path_relative_to starget, target
31
+ dir = File.join(ssource, File.dirname(subdir))
32
+ if not File.directory? dir
33
+ FileUtils.mkdir_p dir
34
+ FileUtils.chmod 0777, dir
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ if not File.directory? source
41
+ FileUtils.mkdir_p source
42
+ FileUtils.chmod 0777, source
43
+ end
44
+ seen_mounts[target] = source
45
+ mount_conf << " -v #{File.expand_path(source)}:#{target}"
46
+ end
47
+ end
48
+ end
49
+
50
+ if infrastructure[:workflow_autoinstall] and infrastructure[:workflow_autoinstall].to_s == 'true' and cmd =~ /rbbt/
51
+ cmd = "env RBBT_WORKFLOW_AUTOINSTALL=true " + cmd
52
+ end
53
+
54
+ umask = infrastructure[:umask] ? 'umask 000; ' : ''
55
+ name_conf = options[:name]
56
+ name_conf = "--name " << name_conf if name_conf
57
+ name_conf ||= ""
58
+ cmd_str = "docker run #{name_conf} #{mount_conf} #{user_conf} #{docker_args*" "} #{image} /bin/bash --login -c '#{umask}#{cmd} #{cmd_args*" "}"
59
+ cmd_str += " --log #{Log.severity} " if cmd =~ /\brbbt$/
60
+ cmd_str += "'"
61
+
62
+ Log.info "Docker: \n" << cmd_str
63
+
64
+ exec(cmd_str) unless options[:dry_run]
65
+ end
66
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-20 00:00:00.000000000 Z
11
+ date: 2016-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbbt-util
@@ -38,7 +38,7 @@ files:
38
38
  - Vagrantfile
39
39
  - bin/build_rbbt_provision_sh.rb
40
40
  - bin/run_rbbt_docker.rb
41
- - lib/.keep
41
+ - lib/rbbt/docker.rb
42
42
  - share/provision_scripts/bootstrap.sh
43
43
  - share/provision_scripts/gem_setup.sh
44
44
  - share/provision_scripts/ruby_setup.sh
data/lib/.keep DELETED
File without changes