specinfra 2.18.3 → 2.19.0

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 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