xp5k 0.0.10 → 0.0.11
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 +5 -13
- data/Gemfile.lock +58 -17
- data/README.md +19 -21
- data/lib/xp5k/rake/dsl.rb +163 -0
- data/lib/xp5k/rake.rb +3 -0
- data/lib/xp5k/role.rb +32 -2
- data/lib/xp5k/version.rb +1 -1
- data/xp5k.gemspec +7 -6
- metadata +42 -27
checksums.yaml
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
5
|
-
data.tar.gz: !binary |-
|
|
6
|
-
MWQ2ZjBkZWU3MjI0OTMxZDUwOGRjYjViNjlkYTY4NjQ2ZDUwMTk1OA==
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 64a41367917d4c9b4445f795f9d71eb1a092b901
|
|
4
|
+
data.tar.gz: 26ea5183d5e2e675bccdb938443d2e464efbeda6
|
|
7
5
|
SHA512:
|
|
8
|
-
metadata.gz:
|
|
9
|
-
|
|
10
|
-
MzlmMTMzNzMxNmNlZjJlMGVkNzM3MzA0NGQyY2QxYTcwNTJmY2ZmZjQ1N2Ez
|
|
11
|
-
YzU0NGM2Nzc2YzA5YzBjNTI0ZDg5Yzc0MDBiOWNkZGFkZGQwYmI=
|
|
12
|
-
data.tar.gz: !binary |-
|
|
13
|
-
OTMzOWE0N2I5MTZhMmYzNDE5YzFiMTllNWJmMzA1YWRiM2I3YjQ1ZmFiOTI3
|
|
14
|
-
NjUwMDIzZTkzODQ4YzY0ODQwNWNkODM1MzQxY2NmMzQxMDNhZTRiMmM5NjVl
|
|
15
|
-
NGE3MDNiZmI4MDdiNDUzNzg0Y2Q5NDFiMmQ2OWQ4MzQ2ZjY3YzI=
|
|
6
|
+
metadata.gz: a4e3e3c59d52bf281a1e0c8a55f328c5e7ecc4fd4791d63aff1e5a099255c46f11fbdb2267861ccde607a5ea7467d0d55de1d37d542c592ecb0822e34214903d
|
|
7
|
+
data.tar.gz: 84348914d0e589ef7859de46a980806b98a0067fcef293e5290aa8f8d67b6bb7c53b7b6d8f29e62235bf7c3d449c210bef4e08deda64b04a8409ef93daa4bf5b
|
data/Gemfile.lock
CHANGED
|
@@ -1,38 +1,79 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
xp5k (0.0.
|
|
5
|
-
json (
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
xp5k (0.0.11)
|
|
5
|
+
json (~> 1.8)
|
|
6
|
+
net-ssh-multi (~> 1.2)
|
|
7
|
+
rest-client (~> 1.8)
|
|
8
|
+
restfully (~> 1.1)
|
|
9
|
+
term-ansicolor (~> 1.3)
|
|
8
10
|
|
|
9
11
|
GEM
|
|
10
12
|
remote: http://rubygems.org/
|
|
11
13
|
specs:
|
|
12
|
-
addressable (2.3.
|
|
13
|
-
backports (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
addressable (2.3.8)
|
|
15
|
+
backports (3.6.7)
|
|
16
|
+
bond (0.4.3)
|
|
17
|
+
domain_name (0.5.25)
|
|
18
|
+
unf (>= 0.0.5, < 1.0.0)
|
|
19
|
+
http-cookie (1.0.2)
|
|
20
|
+
domain_name (~> 0.5)
|
|
21
|
+
json (1.8.3)
|
|
22
|
+
mime-types (2.6.2)
|
|
23
|
+
net-ssh (3.0.1)
|
|
24
|
+
net-ssh-gateway (1.2.0)
|
|
25
|
+
net-ssh (>= 2.6.5)
|
|
26
|
+
net-ssh-multi (1.2.1)
|
|
27
|
+
net-ssh (>= 2.6.5)
|
|
28
|
+
net-ssh-gateway (>= 1.2.0)
|
|
29
|
+
netrc (0.11.0)
|
|
30
|
+
rack (1.6.4)
|
|
31
|
+
rack-cache (1.5.1)
|
|
18
32
|
rack (>= 0.4)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
33
|
+
rb-readline (0.5.3)
|
|
34
|
+
rest-client (1.8.0)
|
|
35
|
+
http-cookie (>= 1.0.2, < 2.0)
|
|
36
|
+
mime-types (>= 1.16, < 3.0)
|
|
37
|
+
netrc (~> 0.7)
|
|
38
|
+
rest-client-components (1.4.0)
|
|
22
39
|
rack (>= 1.0.1)
|
|
23
|
-
rest-client (>= 1.6.0
|
|
24
|
-
restfully (
|
|
40
|
+
rest-client (>= 1.6.0)
|
|
41
|
+
restfully (1.1.1)
|
|
25
42
|
addressable
|
|
26
43
|
backports
|
|
27
44
|
json (~> 1.5)
|
|
28
45
|
rack-cache
|
|
46
|
+
rb-readline
|
|
29
47
|
rest-client (~> 1.6)
|
|
30
48
|
rest-client-components
|
|
31
|
-
|
|
49
|
+
ripl (= 0.6.1)
|
|
50
|
+
ripl-color_streams
|
|
51
|
+
ripl-multi_line
|
|
52
|
+
ripl-play (~> 0.2.1)
|
|
53
|
+
ripl-short_errors
|
|
54
|
+
ripl (0.6.1)
|
|
55
|
+
bond (~> 0.4.0)
|
|
56
|
+
ripl-color_streams (0.1.2)
|
|
57
|
+
ripl (>= 0.2.8)
|
|
58
|
+
ripl-multi_line (0.3.1)
|
|
59
|
+
ripl (>= 0.3.6)
|
|
60
|
+
ripl-play (0.2.1)
|
|
61
|
+
ripl (>= 0.3.0)
|
|
62
|
+
ripl-short_errors (0.1.0)
|
|
63
|
+
ripl (>= 0.2.8)
|
|
64
|
+
term-ansicolor (1.3.2)
|
|
65
|
+
tins (~> 1.0)
|
|
66
|
+
tins (1.6.0)
|
|
67
|
+
unf (0.1.4)
|
|
68
|
+
unf_ext
|
|
69
|
+
unf_ext (0.0.7.1)
|
|
32
70
|
|
|
33
71
|
PLATFORMS
|
|
34
72
|
ruby
|
|
35
73
|
|
|
36
74
|
DEPENDENCIES
|
|
37
|
-
bundler (
|
|
75
|
+
bundler (~> 1.10)
|
|
38
76
|
xp5k!
|
|
77
|
+
|
|
78
|
+
BUNDLED WITH
|
|
79
|
+
1.10.6
|
data/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#### Table of Contents
|
|
2
2
|
|
|
3
|
-
1. [Getting started](#
|
|
4
|
-
* [Gemfile](#
|
|
5
|
-
* [Restfully](#
|
|
6
|
-
* [Ssh config](#
|
|
7
|
-
2. [Samples](#
|
|
8
|
-
* [Hello date](#
|
|
9
|
-
* [Xp5k Roles](#
|
|
10
|
-
* [Nested roels](#
|
|
11
|
-
* [Patterns](#
|
|
12
|
-
* [Get the deployed nodes](#
|
|
13
|
-
* [Automatic redeployment](#
|
|
14
|
-
* [Vlan support](#
|
|
15
|
-
* [Non deploy jobs](#
|
|
3
|
+
1. [Getting started](#getting-started)
|
|
4
|
+
* [Gemfile](#gemfile)
|
|
5
|
+
* [Restfully](#restfully)
|
|
6
|
+
* [Ssh config](#ssh-config)
|
|
7
|
+
2. [Samples](#samples)
|
|
8
|
+
* [Hello date](#hello-date)
|
|
9
|
+
* [Xp5k Roles](#xp5k-roles)
|
|
10
|
+
* [Nested roels](#nested-roles)
|
|
11
|
+
* [Patterns](#patterns)
|
|
12
|
+
* [Get the deployed nodes](#get-the-deployed-nodes)
|
|
13
|
+
* [Automatic redeployment](#automatic-redeployment)
|
|
14
|
+
* [Vlan support](#vlan-support)
|
|
15
|
+
* [Non deploy jobs](#non-deploy-jobs)
|
|
16
16
|
|
|
17
17
|
# Getting started
|
|
18
18
|
|
|
@@ -83,9 +83,9 @@ set :g5k_user, "msimonin"
|
|
|
83
83
|
# gateway
|
|
84
84
|
set :gateway, "#{g5k_user}@access.grid5000.fr"
|
|
85
85
|
# These keys will used to access the gateway and nodes
|
|
86
|
-
ssh_options[:keys]= [File.join(ENV["HOME"], ".ssh", "id_rsa")
|
|
86
|
+
ssh_options[:keys]= [File.join(ENV["HOME"], ".ssh", "id_rsa")]
|
|
87
87
|
# # This key will be installed on nodes
|
|
88
|
-
set :ssh_public, File.join(ENV["HOME"], ".ssh", "
|
|
88
|
+
set :ssh_public, File.join(ENV["HOME"], ".ssh", "id_rsa.pub")
|
|
89
89
|
|
|
90
90
|
XP5K::Config.load
|
|
91
91
|
|
|
@@ -191,11 +191,11 @@ role :server do
|
|
|
191
191
|
@myxp.role_with_name('server').servers
|
|
192
192
|
end
|
|
193
193
|
|
|
194
|
-
role :
|
|
194
|
+
role :frontend do
|
|
195
195
|
@myxp.role_with_name('frontend').servers
|
|
196
196
|
end
|
|
197
197
|
|
|
198
|
-
role :
|
|
198
|
+
role :clients do
|
|
199
199
|
@myxp.role_with_name('clients').servers
|
|
200
200
|
end
|
|
201
201
|
```
|
|
@@ -223,7 +223,7 @@ You can also define nested roles (only 1 level) :
|
|
|
223
223
|
|
|
224
224
|
You can select nodes matching a pattern (`String` or `Regexp`) :
|
|
225
225
|
|
|
226
|
-
```
|
|
226
|
+
```ruby
|
|
227
227
|
roles = []
|
|
228
228
|
scenario['clusters'].each do |cluster|
|
|
229
229
|
roles << XP5K::Role.new({
|
|
@@ -295,14 +295,12 @@ You can control this behaviour passing special keys in the deployment hash.
|
|
|
295
295
|
|
|
296
296
|
## Non deploy jobs
|
|
297
297
|
|
|
298
|
-
Here we fill the ```types``` field with ```allow_classic_ssh```.
|
|
298
|
+
Here we fill the ```types``` field with ```allow_classic_ssh```.
|
|
299
299
|
|
|
300
300
|
```ruby
|
|
301
301
|
@myxp.define_job({
|
|
302
302
|
:resources => ["nodes=1, walltime=1"],
|
|
303
303
|
:site => "rennes",
|
|
304
|
-
:retry => true,
|
|
305
|
-
:goal => "100%",
|
|
306
304
|
:types => ["allow_classic_ssh"],
|
|
307
305
|
:name => "init" ,
|
|
308
306
|
:command => "sleep 86400"
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
require 'xp5k/role'
|
|
2
|
+
require 'net/ssh/multi'
|
|
3
|
+
require 'timeout'
|
|
4
|
+
require 'thread'
|
|
5
|
+
|
|
6
|
+
module XP5K
|
|
7
|
+
module Rake
|
|
8
|
+
module DSL
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def role(*args, &block)
|
|
13
|
+
hosts = []
|
|
14
|
+
procblock = nil
|
|
15
|
+
if block_given?
|
|
16
|
+
raise 'Arguments not allowed with block' unless args[1].nil?
|
|
17
|
+
procblock = block
|
|
18
|
+
else
|
|
19
|
+
case args[1]
|
|
20
|
+
when String
|
|
21
|
+
hosts = [args[1]]
|
|
22
|
+
when Array
|
|
23
|
+
hosts = args[1]
|
|
24
|
+
else
|
|
25
|
+
raise "Role <#{args.first}> argument must be a String or an Array"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
XP5K::Role.new(name: args.first, size: hosts.length, servers: hosts, proc: procblock).add
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def roles(*args)
|
|
35
|
+
hosts = []
|
|
36
|
+
args.each do |rolename|
|
|
37
|
+
hosts << XP5K::Role.findByName(rolename).servers
|
|
38
|
+
end
|
|
39
|
+
hosts.flatten!
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
#
|
|
43
|
+
def on(hosts, *args, &block)
|
|
44
|
+
|
|
45
|
+
logs = Hash.new { |h,k| h[k] = '' }
|
|
46
|
+
errors = Hash.new { |h,k| h[k] = '' }
|
|
47
|
+
ssh_session = {}
|
|
48
|
+
current_server = ""
|
|
49
|
+
all_connected = false
|
|
50
|
+
failed_servers = []
|
|
51
|
+
hosts = [hosts] if hosts.class == String
|
|
52
|
+
|
|
53
|
+
XP5K::Config[:user] ||= ENV["USER"]
|
|
54
|
+
XP5K::Config[:gateway] ||= XP5K::Config[:user] + "@access.grid5000.fr"
|
|
55
|
+
|
|
56
|
+
commands = (args.last.class == String or args.last.class == Array) ? (args.last.class == String ? [args.pop] : args.pop ) : []
|
|
57
|
+
options = args.last.class == Hash ? args.pop : {}
|
|
58
|
+
options[:user] ||= 'root'
|
|
59
|
+
|
|
60
|
+
if block_given?
|
|
61
|
+
case result = yield
|
|
62
|
+
when String
|
|
63
|
+
commands << result
|
|
64
|
+
when Array
|
|
65
|
+
commands.push(result).flatten!
|
|
66
|
+
else
|
|
67
|
+
raise "<on> block must return String or Array"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
until all_connected
|
|
72
|
+
failed = false
|
|
73
|
+
gateway_options = {}
|
|
74
|
+
gateway_options[:config] == XP5K::Config[:ssh_config] ? true : XP5K::Config[:ssh_config]
|
|
75
|
+
gateway_user, gateway_host = XP5K::Config[:gateway].match(/^(?:([^;,:=]+)@|)(.*?)$/)[1,2]
|
|
76
|
+
gateway = Net::SSH::Gateway.new(gateway_host, gateway_user)
|
|
77
|
+
workq = Queue.new
|
|
78
|
+
hosts.each{ |host| workq << host }
|
|
79
|
+
workers = (0...10).map do
|
|
80
|
+
Thread.new do
|
|
81
|
+
begin
|
|
82
|
+
while host = workq.pop(true)
|
|
83
|
+
begin
|
|
84
|
+
timeout(5) do
|
|
85
|
+
ssh_session[host] = gateway.ssh(host, options[:user])
|
|
86
|
+
puts "Connected to #{host}..."
|
|
87
|
+
end
|
|
88
|
+
rescue Timeout::Error, Net::SSH::Disconnect, Exception => e
|
|
89
|
+
puts "Removing #{host} (#{e.message})..."
|
|
90
|
+
hosts.delete host
|
|
91
|
+
failed_servers << host
|
|
92
|
+
failed = true
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
rescue ThreadError
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
end; "ok"
|
|
101
|
+
workers.map(&:join); "ok"
|
|
102
|
+
|
|
103
|
+
all_connected = true if !failed
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
workq = Queue.new
|
|
107
|
+
hosts.each{ |host| workq << host }
|
|
108
|
+
workers = (0...10).map do
|
|
109
|
+
Thread.new do
|
|
110
|
+
begin
|
|
111
|
+
while host = workq.pop(true)
|
|
112
|
+
begin
|
|
113
|
+
commands.each do |command|
|
|
114
|
+
puts "[command][#{host}] #{command}"
|
|
115
|
+
ssh_session[host].exec!(command) do |channel, stream, data|
|
|
116
|
+
logs[host] << data
|
|
117
|
+
errors[host] << data if stream == :err
|
|
118
|
+
puts "[#{stream}][#{host}] #{data}" if data.chomp != ""
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
rescue Exception => e
|
|
122
|
+
puts "[#{host}] " + e.message
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
rescue ThreadError
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end; "ok"
|
|
129
|
+
workers.map(&:join); "ok"
|
|
130
|
+
|
|
131
|
+
# Print the result sorting by hostname
|
|
132
|
+
errors.sort.each do |error|
|
|
133
|
+
puts "---- stderr on #{error.first} #{"-" * (get_width - error.first.length - 16)} "
|
|
134
|
+
puts "#{error[1]}"
|
|
135
|
+
end
|
|
136
|
+
logs.sort.each do |key, value|
|
|
137
|
+
puts "---- #{key} #{"-" * (get_width - key.length - 6)}"
|
|
138
|
+
puts value
|
|
139
|
+
end
|
|
140
|
+
puts "Servers unreachable : #{failed_servers.inspect}" if !failed_servers.empty?
|
|
141
|
+
|
|
142
|
+
# Clean all ssh connections
|
|
143
|
+
puts "Closing ssh connections..."
|
|
144
|
+
hosts.each do |host|
|
|
145
|
+
ssh_session[host].close
|
|
146
|
+
gateway.close ssh_session[host].transport.port
|
|
147
|
+
end
|
|
148
|
+
gateway.shutdown!
|
|
149
|
+
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def run(command)
|
|
153
|
+
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def get_width
|
|
157
|
+
result = `tput cols`
|
|
158
|
+
result.to_i
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
data/lib/xp5k/rake.rb
ADDED
data/lib/xp5k/role.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
class XP5K::Role
|
|
2
2
|
|
|
3
|
-
attr_accessor :name, :size, :desc, :servers, :jobid, :inner, :pattern
|
|
3
|
+
attr_accessor :name, :size, :desc, :servers, :jobid, :inner, :pattern, :proc
|
|
4
4
|
|
|
5
5
|
@@roles = []
|
|
6
6
|
|
|
@@ -9,6 +9,7 @@ class XP5K::Role
|
|
|
9
9
|
@inner = false
|
|
10
10
|
@servers = []
|
|
11
11
|
@desc = ""
|
|
12
|
+
@proc = nil
|
|
12
13
|
|
|
13
14
|
# Required parameters
|
|
14
15
|
%w{ name size }.each do |param|
|
|
@@ -20,11 +21,36 @@ class XP5K::Role
|
|
|
20
21
|
end
|
|
21
22
|
|
|
22
23
|
# Optional parameters
|
|
23
|
-
%w{ desc servers inner pattern }.each do |param|
|
|
24
|
+
%w{ desc servers inner pattern proc }.each do |param|
|
|
24
25
|
instance_variable_set("@#{param}", options[param.to_sym]) if options[param.to_sym]
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
|
|
29
|
+
def add
|
|
30
|
+
@@roles << self
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def servers
|
|
34
|
+
if self.proc.class == Proc
|
|
35
|
+
self.callproc
|
|
36
|
+
end
|
|
37
|
+
@servers
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def callproc
|
|
41
|
+
case result = self.proc.call
|
|
42
|
+
when String
|
|
43
|
+
hosts = [result]
|
|
44
|
+
when Array
|
|
45
|
+
hosts = result
|
|
46
|
+
else
|
|
47
|
+
raise "Role <#{args.first}> block must return String or Array"
|
|
48
|
+
end
|
|
49
|
+
self.size = hosts.length
|
|
50
|
+
self.servers = hosts
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
28
54
|
def self.create_roles(job, job_definition)
|
|
29
55
|
# Definition will return list of roles
|
|
30
56
|
roles = []
|
|
@@ -81,6 +107,10 @@ class XP5K::Role
|
|
|
81
107
|
@@roles
|
|
82
108
|
end
|
|
83
109
|
|
|
110
|
+
def self.listnames()
|
|
111
|
+
@@roles.map { |role| role.name }
|
|
112
|
+
end
|
|
113
|
+
|
|
84
114
|
def self.findByName(name)
|
|
85
115
|
roles = @@roles.select { |x| x.name == name }
|
|
86
116
|
roles.empty? ? nil : roles.first
|
data/lib/xp5k/version.rb
CHANGED
data/xp5k.gemspec
CHANGED
|
@@ -10,17 +10,18 @@ Gem::Specification.new do |s|
|
|
|
10
10
|
s.email = ['pascal.morillon@irisa.fr']
|
|
11
11
|
s.license = 'MIT'
|
|
12
12
|
s.homepage = 'https://github.com/pmorillon/xp5k'
|
|
13
|
-
s.summary = %q{A small Grid'5000 helper
|
|
13
|
+
s.summary = %q{A small Grid'5000 helper}
|
|
14
14
|
s.description = %q{A small Grid'5000 helper to submit jobs and deploy environments via REST API}
|
|
15
15
|
|
|
16
16
|
s.required_rubygems_version = '>= 1.3.6'
|
|
17
17
|
|
|
18
|
-
s.add_dependency 'rest-client', '1.
|
|
19
|
-
s.add_dependency 'restfully', '
|
|
20
|
-
s.add_dependency 'term-ansicolor', '
|
|
21
|
-
s.add_dependency 'json', '
|
|
18
|
+
s.add_dependency 'rest-client', '~> 1.8' # SSL problems with newer version
|
|
19
|
+
s.add_dependency 'restfully', '~>1.1'
|
|
20
|
+
s.add_dependency 'term-ansicolor', '~> 1.3'
|
|
21
|
+
s.add_dependency 'json', '~> 1.8'
|
|
22
|
+
s.add_dependency 'net-ssh-multi', '~> 1.2'
|
|
22
23
|
|
|
23
|
-
s.add_development_dependency 'bundler', '
|
|
24
|
+
s.add_development_dependency 'bundler', '~> 1.10'
|
|
24
25
|
|
|
25
26
|
s.files = `git ls-files`.split("\n")
|
|
26
27
|
s.require_paths = ['lib']
|
metadata
CHANGED
|
@@ -1,85 +1,99 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: xp5k
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.11
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pascal Morillon
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-11-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rest-client
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.
|
|
19
|
+
version: '1.8'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 1.
|
|
26
|
+
version: '1.8'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: restfully
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.
|
|
33
|
+
version: '1.1'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 1.
|
|
40
|
+
version: '1.1'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: term-ansicolor
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 1.
|
|
47
|
+
version: '1.3'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 1.
|
|
54
|
+
version: '1.3'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: json
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 1.
|
|
61
|
+
version: '1.8'
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 1.
|
|
68
|
+
version: '1.8'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: net-ssh-multi
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '1.2'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '1.2'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: bundler
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
|
-
- -
|
|
87
|
+
- - "~>"
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 1.
|
|
89
|
+
version: '1.10'
|
|
76
90
|
type: :development
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
|
-
- -
|
|
94
|
+
- - "~>"
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 1.
|
|
96
|
+
version: '1.10'
|
|
83
97
|
description: A small Grid'5000 helper to submit jobs and deploy environments via REST
|
|
84
98
|
API
|
|
85
99
|
email:
|
|
@@ -88,7 +102,7 @@ executables: []
|
|
|
88
102
|
extensions: []
|
|
89
103
|
extra_rdoc_files: []
|
|
90
104
|
files:
|
|
91
|
-
- .gitignore
|
|
105
|
+
- ".gitignore"
|
|
92
106
|
- Gemfile
|
|
93
107
|
- Gemfile.lock
|
|
94
108
|
- LICENCE
|
|
@@ -96,6 +110,8 @@ files:
|
|
|
96
110
|
- lib/xp5k.rb
|
|
97
111
|
- lib/xp5k/config.rb
|
|
98
112
|
- lib/xp5k/exceptions.rb
|
|
113
|
+
- lib/xp5k/rake.rb
|
|
114
|
+
- lib/xp5k/rake/dsl.rb
|
|
99
115
|
- lib/xp5k/role.rb
|
|
100
116
|
- lib/xp5k/version.rb
|
|
101
117
|
- lib/xp5k/xp.rb
|
|
@@ -110,12 +126,12 @@ require_paths:
|
|
|
110
126
|
- lib
|
|
111
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
128
|
requirements:
|
|
113
|
-
- -
|
|
129
|
+
- - ">="
|
|
114
130
|
- !ruby/object:Gem::Version
|
|
115
131
|
version: '0'
|
|
116
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
133
|
requirements:
|
|
118
|
-
- -
|
|
134
|
+
- - ">="
|
|
119
135
|
- !ruby/object:Gem::Version
|
|
120
136
|
version: 1.3.6
|
|
121
137
|
requirements: []
|
|
@@ -123,6 +139,5 @@ rubyforge_project:
|
|
|
123
139
|
rubygems_version: 2.2.2
|
|
124
140
|
signing_key:
|
|
125
141
|
specification_version: 4
|
|
126
|
-
summary: A small Grid'5000 helper
|
|
127
|
-
API
|
|
142
|
+
summary: A small Grid'5000 helper
|
|
128
143
|
test_files: []
|