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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MjEyOTg3NDE2MmZlZWU5N2I3MTViNDI1MWMzNTVkYTE4ZTk5MGJmZQ==
5
- data.tar.gz: !binary |-
6
- MTNiMGFjMzZjNTBlNjljNDMyMzIxZTY3ODEwNGY0YzhlMGE4YjNmMQ==
2
+ SHA1:
3
+ metadata.gz: 72e5ea5818f16ed9e866a00db09a468bf72b086d
4
+ data.tar.gz: 55293b54b5ba7f13ad5ab78ba465355ecbaa66a9
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ODQ2ZmY4NzM4MzI2ODVlOGU2ODc4NGY3OTJlNGJlOTIyZjAzMzZkNGIzNzA3
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
- gems = what.select do |item|
122
- item.include?("-") \
123
- || item.include?("/") \
124
- || Gem::Dependency.new(item).matching_specs.count == 0
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
- if gems.size > 0 # make sure we still have something to do
127
- Kernel.system('gem', 'install', '--no-ri', '--no-rdoc', *gems)
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 #{gems.join(' ')} exited with status: " \
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: #{what.join(' ')}"
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
- # Now we require all the gems you asked to be installed
140
- what.all? { |gem| require gem }
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 blocks.has_key?(sym) && blocks[sym].respond_to?(:call)
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
- return unless Genesis::PromptCLI.ask("Would you like to run this task?", 10, true) == true
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
- success = self.call_block(task.blocks, :rollback, "rolling back!")
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
- Syslog.open("genesis", Syslog::LOG_PID, Syslog::LOG_USER) unless Syslog.opened?
48
- Syslog.log(Syslog::LOG_INFO, logline)
49
- if self.facter['asset_tag']
50
- self.collins.log! self.facter['asset_tag'], message
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.5.3
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: 2014-12-29 00:00:00.000000000 Z
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.ewr01.tumblr.net/Tumblr/genesis
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.2.2
129
+ rubygems_version: 2.4.6
130
130
  signing_key:
131
131
  specification_version: 4
132
132
  summary: Generic server onboarding framework