specinfra 2.18.3 → 2.19.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cbffd79911b524f8816754369992ddf5efbb7a44
4
- data.tar.gz: 3a35dc80f90c08b6e6c05afdcc8a7c80a1f4afe0
3
+ metadata.gz: cf2c3102f5d8cebf837a434b9ad4ec255afc1653
4
+ data.tar.gz: 9dd624f93b008accde8ee1738f370ead1b6bac40
5
5
  SHA512:
6
- metadata.gz: 7a467e1e362a56c97db08d6bb1eb3e557f623f5e47f2b773d57c8b97fcad0bc4abe7e30c474f9361ae2a9c9f66a177c1ff4c8d3b49bea5a374295708dab9fcd7
7
- data.tar.gz: cb051f389156a273be4d7251a591ed3990ea4fdee966ebb5160d8a08628c312beb22167b90e63a76d3457ec7b25505251d4b11dc3731532e1b8349fc6700cc79
6
+ metadata.gz: ea5d647aed6b2c11f894d2ee878c908bf204072864be79c495c3659e526fba7deb3f769c8855d3b4952b53c2ad4e8e82f64e74f79b98a54d416b8a3231982bbb
7
+ data.tar.gz: 8778109a699f26e155a04acc09232b9ce6f1b9956a8505eee401e06ddac5ee82f95b3dc3817d30db29cc2e9ae35606079361f960c73f5fa3b9be870a9f994689
@@ -3,20 +3,73 @@ module Specinfra
3
3
  class Ec2Metadata
4
4
  def initialize
5
5
  @base_uri = 'http://169.254.169.254/latest/meta-data/'
6
+ @metadata = {}
6
7
  end
7
8
 
8
- def get(path='')
9
+ def get
10
+ @metadata = get_metadata
11
+ self
12
+ end
13
+
14
+ def [](key)
15
+ if @metadata[key].nil?
16
+ begin
17
+ require "specinfra/ec2_metadata/#{key}"
18
+ inventory_class = Specinfra::Ec2Metadata.const_get(key.to_camel_case)
19
+ @metadata[key] = inventory_class.get
20
+ rescue LoadError
21
+ @metadata[key] = nil
22
+ rescue
23
+ @metadata[key] = nil
24
+ end
25
+ end
26
+
27
+ @metadata[key]
28
+ end
29
+
30
+ def empty?
31
+ @metadata.empty?
32
+ end
33
+
34
+ def each
35
+ keys.each do |k|
36
+ yield k, @metadata[k]
37
+ end
38
+ end
39
+
40
+ def each_key
41
+ keys.each do |k|
42
+ yield k
43
+ end
44
+ end
45
+
46
+ def each_value
47
+ keys.each do |k|
48
+ yield @metadata[k]
49
+ end
50
+ end
51
+
52
+ def keys
53
+ @metadata.keys
54
+ end
55
+
56
+ def inspect
57
+ @metadata
58
+ end
59
+
60
+ private
61
+ def get_metadata(path='')
9
62
  metadata = {}
10
63
 
11
64
  keys = Specinfra::Runner.run_command("curl #{@base_uri}#{path}").stdout.split("\n")
12
65
 
13
66
  keys.each do |key|
14
67
  if key =~ %r{/$}
15
- metadata[key[0..-2]] = get(path + key)
68
+ metadata[key[0..-2]] = get_metadata(path + key)
16
69
  else
17
70
  if key =~ %r{=}
18
71
  key = key.split('=')[0] + '/'
19
- metadata[key[0..-2]] = get(path + key)
72
+ metadata[key[0..-2]] = get_metadata(path + key)
20
73
  else
21
74
  ret = get_endpoint(path)
22
75
  metadata[key] = get_endpoint(path + key) if ret
@@ -1,3 +1,3 @@
1
1
  module Specinfra
2
- VERSION = "2.18.3"
2
+ VERSION = "2.19.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: specinfra
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.18.3
4
+ version: 2.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gosuke Miyashita
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-07 00:00:00.000000000 Z
11
+ date: 2015-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh