puppet-databinding-jerakiaserver 0.1.0 → 0.2.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: 01db418ee49d7008862c23f707961a902e3658ef
4
- data.tar.gz: 18fcdc271a91cd5bc534986065fdf2e54a39c94c
3
+ metadata.gz: 305b558ff702b4d78adaf8bfed2b5d5ac472b189
4
+ data.tar.gz: c87beaa8346291fa90cb303360b8a15ea71e73dd
5
5
  SHA512:
6
- metadata.gz: a2b1c2e07d991fae51ee1b90fe56258d1772723c6a376b56928dc242ccc93dfc5ec1da93b620042ece51acce9958f766cac06e2a2b91e022803f70a5c9326df6
7
- data.tar.gz: bf28b67a833c0322a321debf701aa0e15b38b86b9451617680153f3f54db54e5f5af2f7e64918f9f0603d33085fdfebb60d4ad6407fbd18b2cf956a6e7498176
6
+ metadata.gz: 7ad39725911bd7fa18a3dbfade20b76667132c6c2649b1c1f0fa2796dbddc28b550d7326fe03e5b5c8a47e512539b62bd79859d9308d3cd822fb166bd7e0a2cf
7
+ data.tar.gz: 923ebd1340c493516edf3f2dbf09066f257983d4f4552aa341b6374b50d0d7149072e3ea361f55d7ace3bd2105d85911cc0e8e48b8532dfe573723c6963d8a63
@@ -1,7 +1,6 @@
1
1
  require 'puppet/indirector/code'
2
2
  require 'jerakia/client'
3
3
  require 'json'
4
- require 'digest/md5'
5
4
 
6
5
  class Puppet::DataBinding::Jerakiaserver < Puppet::Indirector::Code
7
6
 
@@ -17,19 +16,10 @@ class Puppet::DataBinding::Jerakiaserver < Puppet::Indirector::Code
17
16
  super
18
17
  end
19
18
 
20
- def server_scope(identifier)
21
- returndata = jerakia.get_scope_uuid('puppet', identifier)
22
- if returndata.is_a?(Hash)
23
- return returndata['uuid']
24
- else
25
- return nil
26
- end
27
- end
28
-
29
19
  def store_scope(identifier, uuid, scope)
30
20
  @scope_cache[identifier] = {
31
21
  :uuid => uuid,
32
- :md5 => Digest::MD5.hexdigest(scope.to_s)
22
+ :scope => scope
33
23
  }
34
24
  end
35
25
 
@@ -38,30 +28,12 @@ class Puppet::DataBinding::Jerakiaserver < Puppet::Indirector::Code
38
28
  store_scope(identifier, returndata['uuid'], scope)
39
29
  end
40
30
 
41
- def scope_valid?(identifier, scope)
42
- uuid = server_scope(identifier)
43
-
44
- # If the server doesn't have a copy, refresh
45
- return false unless uuid
46
-
47
- if scope_cache[identifier]
48
- # If the UUID is different we need to refresh
49
- return false unless scope_cache[identifier][:uuid] == uuid
50
-
51
- # If the MD5 sum of the scope has changed, we are probably in a new
52
- # puppet run and need to refresh the scope.
53
- return false unless scope_cache[identifier][:md5] == Digest::MD5.hexdigest(scope.to_s)
54
- else
55
-
56
- # If the scope is not cached at all then we should refresh
57
- return false
58
- end
31
+ def scope_valid?(identifier, metadata)
32
+ return false unless @scope_cache.include?(identifier)
33
+ return false unless @scope_cache[identifier][:scope] == metadata
59
34
  return true
60
35
  end
61
36
 
62
-
63
-
64
-
65
37
  def find(request)
66
38
 
67
39
  # Jerakia doesn't do anything with lookup_options, this behaviour is achieved
@@ -73,10 +45,13 @@ class Puppet::DataBinding::Jerakiaserver < Puppet::Indirector::Code
73
45
  namespace=lookupdata.join('/')
74
46
  metadata = request.options[:variables].to_hash.reject { |k, v| v.is_a?(Puppet::Resource) }
75
47
 
76
- # If the scope is unchanged assume this is part of the same puppet run and don't resend
77
- # otherwise we need to send the scope to Jerakia server ahead of time.
78
- #
79
- identifier = metadata['trusted']['certname']
48
+ # If we are on an earlier version of Puppet that doesn't have trusted facts,
49
+ # use the fqdn fact to identify us. Puppet 4 uses trusted.
50
+ if metadata['trusted']
51
+ identifier = metadata['trusted']['certname']
52
+ else
53
+ identifier = metadata['fqdn']
54
+ end
80
55
 
81
56
  send_scope(identifier, metadata) unless scope_valid?(identifier, metadata)
82
57
 
@@ -89,12 +64,20 @@ class Puppet::DataBinding::Jerakiaserver < Puppet::Indirector::Code
89
64
  }
90
65
  }
91
66
 
92
- lookup = jerakia.lookup(key, lookup_options)
67
+ begin
68
+ lookup = jerakia.lookup(key, lookup_options)
69
+ rescue Jerakia::Client::ScopeNotFoundError => e
70
+ send_scope(identifier, metadata)
71
+ lookup = jerakia.lookup(key, lookup_options)
72
+ rescue => e
73
+ raise Puppet::DataBinding::LookupError.new("Jerakia data lookup failed #{e.class}", e.message)
74
+ end
75
+
93
76
  if lookup.is_a?(Hash)
94
77
  raise Puppet::DataBinding::LookupError.new("Jerakia data lookup failed", lookup['message']) unless lookup['status'] = 'ok'
95
78
  return lookup['payload']
96
79
  else
97
- raise Puppet::DataBinding::LookupError.new("Jerakia data lookup failed", "Unknown reason")
80
+ raise Puppet::DataBinding::LookupError.new("Jerakia data lookup failed", "Expected a hash but got a #{lookup.class}")
98
81
  end
99
82
  end
100
83
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-databinding-jerakiaserver
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Dunn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-14 00:00:00.000000000 Z
11
+ date: 2017-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jerakia-client