genesis_framework 0.5.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/lib/genesisframework/task.rb +29 -10
- data/lib/genesisframework/tasks.rb +15 -4
- data/lib/genesisframework/utils.rb +13 -5
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MTNiMGFjMzZjNTBlNjljNDMyMzIxZTY3ODEwNGY0YzhlMGE4YjNmMQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 72e5ea5818f16ed9e866a00db09a468bf72b086d
|
4
|
+
data.tar.gz: 55293b54b5ba7f13ad5ab78ba465355ecbaa66a9
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NjljOTNlNjNkOGFlNmYyNTYyMDc0NzgwM2E4MGIxYzlmYzI1MzI0NzZjYjdl
|
11
|
-
MTkyNmNjYmY0YmVhZWU0YTYzMTBiNjYwYzJhODZlYmJlZmJlMjE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZTU2ZmZjOTQ1ZmQyOTRhNmYzNDhkMGJjMDY5ZmI0NjkxNTg0NGIxNTU5MmRl
|
14
|
-
NjkwMzVlN2UyNTBmNzA5NjdkZTFkZDY4MDJiNGNjNTFlYzBjZDIwNDgzZmNj
|
15
|
-
NmI0MmJlN2RiNzQ5NTY1MTQ3NDk1YWE5OTQ3NjIyNzdjOWM4NmM=
|
6
|
+
metadata.gz: 2ff72c88bf6a0c3585f26c3bf062dad5d173b0c7f2b032ee28e35b3d40cdec404830d46fc5b8fdbe076bf5ea929f1a5d85a4c49aed3ec5dd6495c5021f2c7160
|
7
|
+
data.tar.gz: e8a1878de23372af3d813737de5a9568ed25d76f701c8508c0c24441270454a589c5d061d0edaa8cfb273c285fdd1bc459878abf40745e77b78356c036f1a4cf
|
@@ -112,32 +112,51 @@ module Genesis
|
|
112
112
|
raise 'yum install exited with status: ' + $?.exitstatus.to_s
|
113
113
|
end
|
114
114
|
elsif provider == :gem
|
115
|
+
# convert arguments in "what" to a gem_name => [requires_list] structure
|
116
|
+
gems = {}
|
117
|
+
what.each { |item|
|
118
|
+
if item.is_a?(Hash)
|
119
|
+
gems.merge! item
|
120
|
+
else
|
121
|
+
gems[item] = [item]
|
122
|
+
end
|
123
|
+
}
|
124
|
+
|
115
125
|
# We give a decent try at detecting if the gem is
|
116
126
|
# installed before trying to reinstall again.
|
117
127
|
# If it contains a - (aka you are specifying a specific version
|
118
128
|
# or a / (aka you are specifying a path to find it) then
|
119
129
|
# we punt on trying to determine if the gem is already
|
120
130
|
# installed and just pass it to install anyway.
|
121
|
-
|
122
|
-
|
123
|
-
||
|
124
|
-
|| Gem::Dependency.new(
|
131
|
+
install_gems = gems.select do |gem, requires|
|
132
|
+
gem.include?("-") \
|
133
|
+
|| gem.include?("/") \
|
134
|
+
|| Gem::Dependency.new(gem).matching_specs.count == 0
|
125
135
|
end
|
126
|
-
|
127
|
-
|
136
|
+
|
137
|
+
if install_gems.size > 0 # make sure we still have something to do
|
138
|
+
options = config.fetch(:gem_args, '').split
|
139
|
+
args = (options << install_gems.keys).flatten
|
140
|
+
Kernel.system('gem', 'install', *args)
|
128
141
|
if $?.exitstatus != 0
|
129
|
-
raise "gem install #{
|
142
|
+
raise "gem install #{args.join(' ')} exited with status: " \
|
130
143
|
+ $?.exitstatus.to_s
|
131
144
|
end
|
132
145
|
else # be noisy that we aren't doing anything
|
133
|
-
puts "already installed gems: #{
|
146
|
+
puts "already installed gems: #{gems.keys.join(' ')}"
|
134
147
|
end
|
135
148
|
|
136
149
|
# now need to clear out the Gem cache so we can load it
|
137
150
|
Gem.clear_paths
|
138
151
|
|
139
|
-
#
|
140
|
-
|
152
|
+
# Attempt to require loaded gems, print a message if we can't.
|
153
|
+
gems.each { |gem, requires|
|
154
|
+
begin
|
155
|
+
requires.each {|r| require r }
|
156
|
+
rescue LoadError
|
157
|
+
raise "Could not load gem #{gem} automatically. Maybe the gem name differs from its load path? Please specify the name to require."
|
158
|
+
end
|
159
|
+
}
|
141
160
|
else
|
142
161
|
raise 'Unknown install provider: ' + provider.to_s
|
143
162
|
end
|
@@ -16,8 +16,12 @@ module Genesis
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
def self.has_block? blocks, sym
|
20
|
+
blocks.has_key?(sym) && blocks[sym].respond_to?(:call)
|
21
|
+
end
|
22
|
+
|
19
23
|
def self.call_block blocks, sym, msg = nil
|
20
|
-
if
|
24
|
+
if self.has_block? blocks, sym
|
21
25
|
puts msg if msg
|
22
26
|
blocks[sym].call
|
23
27
|
else
|
@@ -48,7 +52,13 @@ module Genesis
|
|
48
52
|
def self.execute task_name
|
49
53
|
puts "\n#{task_name}\n================================================="
|
50
54
|
|
51
|
-
|
55
|
+
prompt_timeout = ENV['GENESIS_PROMPT_TIMEOUT'] \
|
56
|
+
|| Genesis::Framework::Utils.config_cache['task_prompt_timeout'] \
|
57
|
+
|| 10
|
58
|
+
if prompt_timeout.to_i > 0
|
59
|
+
# only prompt if there is a resonable timeout
|
60
|
+
return true unless Genesis::PromptCLI.ask("Would you like to run this task?", prompt_timeout, true)
|
61
|
+
end
|
52
62
|
|
53
63
|
task = Genesis::Framework::Tasks.const_get(task_name)
|
54
64
|
|
@@ -123,7 +133,9 @@ module Genesis
|
|
123
133
|
puts "task is successful!"
|
124
134
|
else
|
125
135
|
puts 'task failed!!!'
|
126
|
-
|
136
|
+
if self.has_block? task.blocks, :rollback
|
137
|
+
success = self.call_block(task.blocks, :rollback, "rolling back!")
|
138
|
+
end
|
127
139
|
end
|
128
140
|
|
129
141
|
puts "\n\n"
|
@@ -133,4 +145,3 @@ module Genesis
|
|
133
145
|
end
|
134
146
|
end
|
135
147
|
end
|
136
|
-
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'syslog'
|
2
1
|
require 'collins_client'
|
3
2
|
require 'facter'
|
4
3
|
|
@@ -14,6 +13,7 @@ module Genesis
|
|
14
13
|
@@config_cache = Hash.new
|
15
14
|
@@collins_conn = nil
|
16
15
|
@@facter = nil
|
16
|
+
@@loggers = nil
|
17
17
|
|
18
18
|
# mimicking rail's cattr_accessor
|
19
19
|
def self.config_cache
|
@@ -44,11 +44,19 @@ module Genesis
|
|
44
44
|
def self.log subsystem, message
|
45
45
|
logline = subsystem.to_s + " :: " + message
|
46
46
|
puts logline
|
47
|
-
|
48
|
-
|
49
|
-
if
|
50
|
-
|
47
|
+
|
48
|
+
# Load external logging modules and send log to them
|
49
|
+
if @@loggers.nil?
|
50
|
+
@@loggers = self.config_cache[:loggers].map {|logger|
|
51
|
+
begin
|
52
|
+
require "logging/#{logger.downcase}"
|
53
|
+
Logging.const_get(logger.to_sym)
|
54
|
+
rescue LoadError
|
55
|
+
puts "Could not load logger #{logger}"
|
56
|
+
end
|
57
|
+
}.compact
|
51
58
|
end
|
59
|
+
@@loggers.each {|logger| logger.log logline}
|
52
60
|
end
|
53
61
|
end
|
54
62
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: genesis_framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Johnstone
|
@@ -10,86 +10,86 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-07-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: genesis_promptcli
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - ~>
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0.2'
|
22
|
-
- -
|
22
|
+
- - ">="
|
23
23
|
- !ruby/object:Gem::Version
|
24
24
|
version: 0.2.0
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
|
-
- - ~>
|
29
|
+
- - "~>"
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: '0.2'
|
32
|
-
- -
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: 0.2.0
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: genesis_retryingfetcher
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - ~>
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0.4'
|
42
|
-
- -
|
42
|
+
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: 0.4.0
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
48
48
|
requirements:
|
49
|
-
- - ~>
|
49
|
+
- - "~>"
|
50
50
|
- !ruby/object:Gem::Version
|
51
51
|
version: '0.4'
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.4.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: collins_client
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0.2'
|
62
|
-
- -
|
62
|
+
- - ">="
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: 0.2.0
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- - ~>
|
69
|
+
- - "~>"
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '0.2'
|
72
|
-
- -
|
72
|
+
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: 0.2.0
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: facter
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - ~>
|
79
|
+
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '2.0'
|
82
|
-
- -
|
82
|
+
- - ">="
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: 2.0.0
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- - ~>
|
89
|
+
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '2.0'
|
92
|
-
- -
|
92
|
+
- - ">="
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: 2.0.0
|
95
95
|
description: Genesis is a project used to manage provisioning of hardware. This is
|
@@ -106,7 +106,7 @@ files:
|
|
106
106
|
- lib/genesisframework/task.rb
|
107
107
|
- lib/genesisframework/tasks.rb
|
108
108
|
- lib/genesisframework/utils.rb
|
109
|
-
homepage: https://github.
|
109
|
+
homepage: https://github.com/Tumblr/genesis
|
110
110
|
licenses:
|
111
111
|
- Apache License, 2.0
|
112
112
|
metadata: {}
|
@@ -116,17 +116,17 @@ require_paths:
|
|
116
116
|
- lib
|
117
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- -
|
119
|
+
- - ">="
|
120
120
|
- !ruby/object:Gem::Version
|
121
121
|
version: '0'
|
122
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- -
|
124
|
+
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
requirements: []
|
128
128
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.4.6
|
130
130
|
signing_key:
|
131
131
|
specification_version: 4
|
132
132
|
summary: Generic server onboarding framework
|