genesis_framework 0.5.3 → 0.6.4
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/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
|