panoramix 0.5.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.
- data/lib/panoramix/aws.rb +13 -0
- data/lib/panoramix/connections/base_connection.rb +49 -0
- data/lib/panoramix/connections/docker_connection.rb +85 -0
- data/lib/panoramix/connections/local_connection.rb +15 -0
- data/lib/panoramix/connections.rb +28 -0
- data/lib/panoramix/dsl.rb +11 -0
- data/lib/panoramix/external.rb +39 -0
- data/lib/panoramix/hosts.rb +58 -0
- data/lib/panoramix/instances/aws.rb +74 -0
- data/lib/panoramix/instances/base.rb +13 -0
- data/lib/panoramix/instances/local.rb +24 -0
- data/lib/panoramix/instances/metal.rb +26 -0
- data/lib/panoramix/locale.rb +4 -0
- data/lib/panoramix/metal.rb +13 -0
- data/lib/panoramix/mpi.rb +97 -0
- data/lib/panoramix/panoramix_core.rb +109 -0
- data/lib/panoramix/plugin/base.rb +47 -0
- data/lib/panoramix/plugin/docker_build.rb +83 -0
- data/lib/panoramix/plugin/docker_image.rb +67 -0
- data/lib/panoramix/plugin/docker_image_base.rb +61 -0
- data/lib/panoramix/plugin/docker_up.rb +178 -0
- data/lib/panoramix/plugin/git.rb +109 -0
- data/lib/panoramix/plugin/provision.rb +95 -0
- data/lib/panoramix/plugin/s3.rb +81 -0
- data/lib/panoramix/plugin/wget.rb +78 -0
- data/lib/panoramix/tasks/actions.rb +26 -0
- data/lib/panoramix/tasks/common_host_tasks.rb +44 -0
- data/lib/panoramix/tasks/task_mpi.rb +56 -0
- data/lib/panoramix.rb +49 -0
- data/locales/en.yml +55 -0
- metadata +139 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
require "time"
|
2
|
+
require "panoramix/plugin/base"
|
3
|
+
|
4
|
+
module Panoramix
|
5
|
+
module Plugin
|
6
|
+
class S3 < Base
|
7
|
+
|
8
|
+
attr_reader :dst
|
9
|
+
attr_reader :src
|
10
|
+
attr_reader :flags
|
11
|
+
|
12
|
+
def initialize(dst, src, flags, host)
|
13
|
+
super host
|
14
|
+
@dst = dst
|
15
|
+
@src = src
|
16
|
+
@flags = flags
|
17
|
+
end
|
18
|
+
|
19
|
+
# Return current timestamp
|
20
|
+
def timestamp
|
21
|
+
return Time.at 0 unless created?
|
22
|
+
remote_time = shell("aws s3 ls --summarize #{@src} | head -n1 | awk 'END {print $1, $2}'", true)[:out]
|
23
|
+
while remote_time == " \n"
|
24
|
+
sleep 1
|
25
|
+
remote_time = shell("aws s3 ls --summarize #{@src} | head -n1 | awk 'END {print $1, $2}'", true)[:out]
|
26
|
+
end
|
27
|
+
remote_time = Time.parse(remote_time)
|
28
|
+
end
|
29
|
+
|
30
|
+
# When this instance needs to be executed
|
31
|
+
def needed? timestamps
|
32
|
+
return true if !created?
|
33
|
+
File.ctime(@dst) < timestamp
|
34
|
+
end
|
35
|
+
|
36
|
+
# Has this instance already been created
|
37
|
+
def created?
|
38
|
+
File.exists?(@dst)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Action clean fot this task
|
42
|
+
def clean
|
43
|
+
shell "rm -f #{@dst}"
|
44
|
+
end
|
45
|
+
|
46
|
+
# Default action for this task
|
47
|
+
def run_default
|
48
|
+
shell "aws s3 cp #{@flags} #{@src} #{@dst}"
|
49
|
+
end
|
50
|
+
|
51
|
+
def validate
|
52
|
+
out = shell("aws s3 cp --dryrun #{@flags} #{@src} #{@dst}" , true)
|
53
|
+
if (! out[:exit_status].success?)
|
54
|
+
message = I18n.t('errors.s3.not_found', {:uri => @src})
|
55
|
+
raise(ValidationError, message)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
def s3(args, prerequisites, block=nil)
|
65
|
+
# Task name
|
66
|
+
name = args.keys[0]
|
67
|
+
# Artifacts url
|
68
|
+
src = args.values[0][:s3]
|
69
|
+
# Provided flags
|
70
|
+
flags = args.values[0][:flags]
|
71
|
+
|
72
|
+
# S3 tasks always run as local
|
73
|
+
host = "local"
|
74
|
+
|
75
|
+
instance=Panoramix::Plugin::S3.new(name, src, flags, host)
|
76
|
+
|
77
|
+
descriptions = I18n.t('s3')
|
78
|
+
descriptions = Hash.new if descriptions.class != Hash
|
79
|
+
|
80
|
+
Panoramix.define_tasks(name, descriptions, instance, prerequisites, block)
|
81
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require "time"
|
2
|
+
require "panoramix/plugin/base"
|
3
|
+
|
4
|
+
module Panoramix
|
5
|
+
module Plugin
|
6
|
+
class Wget < Base
|
7
|
+
|
8
|
+
attr_reader :dst
|
9
|
+
attr_reader :src
|
10
|
+
attr_reader :flags
|
11
|
+
|
12
|
+
def initialize(dst, src, flags, host)
|
13
|
+
super host
|
14
|
+
@dst = dst
|
15
|
+
@src = src
|
16
|
+
@flags = flags
|
17
|
+
end
|
18
|
+
|
19
|
+
# Return current timestamp
|
20
|
+
def timestamp
|
21
|
+
return Time.at 0 unless created?
|
22
|
+
remote_time = shell("wget #{@flags} --spider -S #{@src} 2>&1 | grep Last-Modified", true)[:out]
|
23
|
+
remote_time = remote_time.split("Last-Modified: ").last
|
24
|
+
remote_time = Time.parse(remote_time)
|
25
|
+
end
|
26
|
+
|
27
|
+
# When this instance needs to be executed
|
28
|
+
def needed? timestamps
|
29
|
+
return true if !created?
|
30
|
+
File.ctime(@dst) < timestamp
|
31
|
+
end
|
32
|
+
|
33
|
+
# Has this instance already been created
|
34
|
+
def created?
|
35
|
+
File.exists?(@dst)
|
36
|
+
end
|
37
|
+
|
38
|
+
# Action clean fot this task
|
39
|
+
def clean
|
40
|
+
shell "rm -f #{@dst}"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Default action for this task
|
44
|
+
def run_default
|
45
|
+
shell "wget -nv #{@flags} #{@src} -O #{@dst}"
|
46
|
+
end
|
47
|
+
|
48
|
+
def validate
|
49
|
+
out = shell("wget #{@flags} --spider -S #{@src}", true)
|
50
|
+
if (! out[:exit_status].success?)
|
51
|
+
message = I18n.t('errors.wget.not_found', {:uri => @src})
|
52
|
+
raise(ValidationError, message)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
def wget(args, prerequisites, block=nil)
|
62
|
+
# Task name
|
63
|
+
name = args.keys[0]
|
64
|
+
# Artifacts url
|
65
|
+
src = args.values[0][:wget]
|
66
|
+
# Provided flags
|
67
|
+
flags = args.values[0][:flags]
|
68
|
+
|
69
|
+
# Wget tasks always run as local
|
70
|
+
host = "local"
|
71
|
+
|
72
|
+
instance=Panoramix::Plugin::Wget.new(name, src, flags, host)
|
73
|
+
|
74
|
+
descriptions = I18n.t('wget')
|
75
|
+
descriptions = Hash.new if descriptions.class != Hash
|
76
|
+
|
77
|
+
Panoramix.define_tasks(name, descriptions, instance, prerequisites, block)
|
78
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Panoramix
|
2
|
+
module Tasks
|
3
|
+
|
4
|
+
class Action
|
5
|
+
attr_reader :action_name
|
6
|
+
attr_reader :silent
|
7
|
+
attr_reader :order_class
|
8
|
+
|
9
|
+
def initialize(action_name, silent, order_class)
|
10
|
+
@action_name = action_name
|
11
|
+
@silent = silent
|
12
|
+
@order_class = order_class
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
Actions = Array.new
|
18
|
+
Actions.push(Action.new("validate", true, [Plugin::DockerUp, Plugin::Wget, Plugin::Git, Plugin::DockerBuild, Plugin::S3]))
|
19
|
+
Actions.push(Action.new("ps", false, [Plugin::Provision, Plugin::DockerImage, Plugin::DockerBuild, Plugin::DockerUp]))
|
20
|
+
Actions.push(Action.new("logs", false, [Plugin::DockerUp]))
|
21
|
+
Actions.push(Action.new("clobber", false, [Plugin::DockerUp, Plugin::DockerBuild, Plugin::DockerImage, Plugin::Provision]))
|
22
|
+
Actions.push(Action.new("clean", true, [Plugin::Wget, Plugin::Git, Plugin::S3]))
|
23
|
+
Actions.push(Action.new("stop", false, [Plugin::DockerUp]))
|
24
|
+
Actions.push(Action.new("start", false, [Plugin::DockerUp]))
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Panoramix
|
2
|
+
module Tasks
|
3
|
+
module CommonHostTasks
|
4
|
+
module_function
|
5
|
+
|
6
|
+
# puts_header writes a formatted name to stdout
|
7
|
+
def puts_header host
|
8
|
+
docker_host = "(#{ENV["DOCKER_HOST"]})" if ENV["DOCKER_HOST"] && host == "localhost"
|
9
|
+
|
10
|
+
puts ""
|
11
|
+
head = "- #{host} #{docker_host} -"
|
12
|
+
(head.length - 1).times {print "-"}
|
13
|
+
puts "-"
|
14
|
+
puts head
|
15
|
+
(head.length - 1).times {print "-"}
|
16
|
+
puts "-\n\n"
|
17
|
+
end
|
18
|
+
|
19
|
+
# define_task defines the main ps task
|
20
|
+
def define_common_task(action, description, silent=false)
|
21
|
+
# Task body
|
22
|
+
|
23
|
+
block = Proc.new do |t|
|
24
|
+
|
25
|
+
Panoramix::Hosts.hosts.each do |k, v|
|
26
|
+
puts_header k if((k != "localhost") && (!silent && (k != "localhost")))
|
27
|
+
Rake::Task["#{k}:#{action}"].invoke
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Define the ps task
|
32
|
+
Panoramix.define_task(action, [], description, block)
|
33
|
+
end
|
34
|
+
|
35
|
+
def define_tasks
|
36
|
+
descriptions = I18n.t('global')
|
37
|
+
Panoramix::Tasks::Actions.each do |act|
|
38
|
+
define_common_task(act.action_name, descriptions[act.action_name.to_sym], act.silent)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Panoramix
|
2
|
+
module Tasks
|
3
|
+
|
4
|
+
module MpiInfo
|
5
|
+
module_function
|
6
|
+
|
7
|
+
# This function defines the main task mpi_info
|
8
|
+
def define_tasks
|
9
|
+
|
10
|
+
block = Proc.new do |t|
|
11
|
+
puts "Base MPI".bold
|
12
|
+
Panoramix::MPI.print_mpi
|
13
|
+
puts "\nExecuted MPI".bold
|
14
|
+
Panoramix::MPI.print_final_mpi
|
15
|
+
puts "\nDiff".bold
|
16
|
+
Panoramix::MPI.diff_sh
|
17
|
+
end
|
18
|
+
|
19
|
+
# Define the mpi_info task
|
20
|
+
Panoramix.define_task("mpi:info", [], I18n.t('mpi.info'), block)
|
21
|
+
|
22
|
+
# Task body
|
23
|
+
block = Proc.new { |t| Panoramix::MPI.print_mpi }
|
24
|
+
|
25
|
+
# Define the mpi_info task
|
26
|
+
Panoramix.define_task("mpi:base", [], I18n.t('mpi.base'), block)
|
27
|
+
|
28
|
+
# Task body
|
29
|
+
block = Proc.new { |t| Panoramix::MPI.print_final_mpi }
|
30
|
+
|
31
|
+
# Define the mpi_info task
|
32
|
+
Panoramix.define_task("mpi:final", [], I18n.t('mpi.final'), block)
|
33
|
+
|
34
|
+
# Task body
|
35
|
+
block = Proc.new { |t| Panoramix::MPI.diff_sh }
|
36
|
+
|
37
|
+
# Define the mpi_info task
|
38
|
+
Panoramix.define_task("mpi:diff", [], I18n.t('mpi.diff'), block)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
module MpiGen
|
43
|
+
module_function
|
44
|
+
|
45
|
+
# This function defines the main task mpi_gen
|
46
|
+
def define_task
|
47
|
+
|
48
|
+
# Task body
|
49
|
+
block = Proc.new { |t| Panoramix::MPI.generate }
|
50
|
+
# Define the mpi_gen task
|
51
|
+
Panoramix.define_task("mpi:gen", [], I18n.t('mpi.gen'), block)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
data/lib/panoramix.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require "panoramix/external"
|
2
|
+
require "panoramix/plugin/docker_image"
|
3
|
+
require "panoramix/plugin/docker_build"
|
4
|
+
require "panoramix/plugin/docker_up"
|
5
|
+
require "panoramix/plugin/provision"
|
6
|
+
require "panoramix/dsl"
|
7
|
+
require "panoramix/hosts"
|
8
|
+
require "panoramix/connections"
|
9
|
+
require "panoramix/panoramix_core"
|
10
|
+
require "panoramix/tasks/actions"
|
11
|
+
require "panoramix/tasks/common_host_tasks"
|
12
|
+
require "panoramix/tasks/task_mpi"
|
13
|
+
require "rake/clean"
|
14
|
+
|
15
|
+
Panoramix::MPI.initialize
|
16
|
+
|
17
|
+
Panoramix::Connections.initialize
|
18
|
+
Panoramix::Hosts.initialize
|
19
|
+
Panoramix::TIMESTAMP=Hash.new
|
20
|
+
|
21
|
+
class String
|
22
|
+
def black; "\033[30m#{self}\033[0m" end
|
23
|
+
def red; "\033[31m#{self}\033[0m" end
|
24
|
+
def green; "\033[32m#{self}\033[0m" end
|
25
|
+
def brown; "\033[33m#{self}\033[0m" end
|
26
|
+
def blue; "\033[34m#{self}\033[0m" end
|
27
|
+
def magenta; "\033[35m#{self}\033[0m" end
|
28
|
+
def cyan; "\033[36m#{self}\033[0m" end
|
29
|
+
def gray; "\033[37m#{self}\033[0m" end
|
30
|
+
def bg_black; "\033[40m#{self}\033[0m" end
|
31
|
+
def bg_red; "\033[41m#{self}\033[0m" end
|
32
|
+
def bg_green; "\033[42m#{self}\033[0m" end
|
33
|
+
def bg_brown; "\033[43m#{self}\033[0m" end
|
34
|
+
def bg_blue; "\033[44m#{self}\033[0m" end
|
35
|
+
def bg_magenta; "\033[45m#{self}\033[0m" end
|
36
|
+
def bg_cyan; "\033[46m#{self}\033[0m" end
|
37
|
+
def bg_gray; "\033[47m#{self}\033[0m" end
|
38
|
+
def bold; "\033[1m#{self}\033[22m" end
|
39
|
+
def reverse_color; "\033[7m#{self}\033[27m" end
|
40
|
+
end
|
41
|
+
|
42
|
+
Panoramix::Tasks::CommonHostTasks.define_tasks
|
43
|
+
Panoramix::Tasks::MpiInfo.define_tasks
|
44
|
+
Panoramix::Tasks::MpiGen.define_task
|
45
|
+
Panoramix::Link = Hash.new
|
46
|
+
|
47
|
+
Rake::Task.tasks.select{|t| t.name == "clobber"}.first.instance_variable_set(:@prerequisites,[])
|
48
|
+
|
49
|
+
at_exit { Panoramix::Connections.connections.each {|k,v| v.close_connection } }
|
data/locales/en.yml
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
en:
|
2
|
+
git:
|
3
|
+
wget:
|
4
|
+
s3:
|
5
|
+
docker_up:
|
6
|
+
main: Deploy new cluster
|
7
|
+
ps: Show deployment status
|
8
|
+
stop: Stop any project running container
|
9
|
+
start: Start any project stopped container
|
10
|
+
logs: Show containers logs
|
11
|
+
docker_image:
|
12
|
+
main: Pull given image
|
13
|
+
ps: Show image status
|
14
|
+
docker_build:
|
15
|
+
main: Build image
|
16
|
+
ps: Show built image status
|
17
|
+
provision:
|
18
|
+
main: Provision new host
|
19
|
+
ps: Show host status
|
20
|
+
host:
|
21
|
+
validate: Check host tasks definitions
|
22
|
+
ps: Print host system ps
|
23
|
+
logs: Print host system logs
|
24
|
+
clobber: Removes current system
|
25
|
+
clean: Remove local artifacts
|
26
|
+
stop: Stop all containers
|
27
|
+
start: Start all containers
|
28
|
+
global:
|
29
|
+
validate: Check tasks definitions
|
30
|
+
ps: Print system ps
|
31
|
+
logs: Print system logs
|
32
|
+
clobber: Removes current system
|
33
|
+
clean: Remove local artifacts
|
34
|
+
stop: Stop all containers
|
35
|
+
start: Start all containers
|
36
|
+
mpi:
|
37
|
+
gen: Generate project MPI
|
38
|
+
info: Show overriden dependencies
|
39
|
+
diff: Show dependencies diff
|
40
|
+
final: Show executed MPI
|
41
|
+
base: Show base dependencies
|
42
|
+
errors:
|
43
|
+
docker_up:
|
44
|
+
cluster_deployed: The cluster %{id} is already deployed. Delete it before creating it again.
|
45
|
+
docker_compose_not_found: The given docker-compose.yml %{path} has not found.
|
46
|
+
env_var_not_given: Undefined environment variables [%{env}].
|
47
|
+
no_compose_provided: Key compose has not been provided
|
48
|
+
docker_build:
|
49
|
+
no_dockerfile_provided: Key dockerfile has not been provided
|
50
|
+
wget:
|
51
|
+
not_found: Cannot download %{uri}.
|
52
|
+
s3:
|
53
|
+
not_found: Cannot download %{uri}.
|
54
|
+
git:
|
55
|
+
not_found: Tag %{tag} or branch %{branch} not found.
|
metadata
ADDED
@@ -0,0 +1,139 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: panoramix
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- sflyr
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2015-08-05 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: pry
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: net-ssh-gateway
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: highline
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: i18n
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
description: Panoramix is a Rakefile like lib, capable of handling docker deployments
|
79
|
+
email: jig@safelayer.com
|
80
|
+
executables: []
|
81
|
+
extensions: []
|
82
|
+
extra_rdoc_files: []
|
83
|
+
files:
|
84
|
+
- lib/panoramix/dsl.rb
|
85
|
+
- lib/panoramix/tasks/common_host_tasks.rb
|
86
|
+
- lib/panoramix/tasks/task_mpi.rb
|
87
|
+
- lib/panoramix/tasks/actions.rb
|
88
|
+
- lib/panoramix/plugin/docker_image.rb
|
89
|
+
- lib/panoramix/plugin/base.rb
|
90
|
+
- lib/panoramix/plugin/docker_image_base.rb
|
91
|
+
- lib/panoramix/plugin/docker_up.rb
|
92
|
+
- lib/panoramix/plugin/docker_build.rb
|
93
|
+
- lib/panoramix/plugin/provision.rb
|
94
|
+
- lib/panoramix/plugin/s3.rb
|
95
|
+
- lib/panoramix/plugin/git.rb
|
96
|
+
- lib/panoramix/plugin/wget.rb
|
97
|
+
- lib/panoramix/hosts.rb
|
98
|
+
- lib/panoramix/connections.rb
|
99
|
+
- lib/panoramix/connections/local_connection.rb
|
100
|
+
- lib/panoramix/connections/base_connection.rb
|
101
|
+
- lib/panoramix/connections/docker_connection.rb
|
102
|
+
- lib/panoramix/locale.rb
|
103
|
+
- lib/panoramix/mpi.rb
|
104
|
+
- lib/panoramix/metal.rb
|
105
|
+
- lib/panoramix/external.rb
|
106
|
+
- lib/panoramix/instances/base.rb
|
107
|
+
- lib/panoramix/instances/local.rb
|
108
|
+
- lib/panoramix/instances/metal.rb
|
109
|
+
- lib/panoramix/instances/aws.rb
|
110
|
+
- lib/panoramix/aws.rb
|
111
|
+
- lib/panoramix/panoramix_core.rb
|
112
|
+
- lib/panoramix.rb
|
113
|
+
- locales/en.yml
|
114
|
+
homepage: https://github.com/sflyr
|
115
|
+
licenses:
|
116
|
+
- MIT
|
117
|
+
post_install_message:
|
118
|
+
rdoc_options: []
|
119
|
+
require_paths:
|
120
|
+
- lib
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
requirements: []
|
134
|
+
rubyforge_project: panoramix
|
135
|
+
rubygems_version: 1.8.23
|
136
|
+
signing_key:
|
137
|
+
specification_version: 3
|
138
|
+
summary: Panoramix gem
|
139
|
+
test_files: []
|