Skip to content

Commit 1970ac3

Browse files
committed
Fixes #30857 - Merge puppet_proxy_puppet_api into mod
In 7e7015a the legacy provider was dropped. Since then, there is only one provider. The provider code was kept since it didn't need any changes to configuration files. However, having a module with just a single provider is complex. Both from a code perspective and as an admin. The implications are that the puppet.yaml and puppet_proxy_puppet_api.yaml files are merged (after being split in df0fc72). This means installer and manual updates are needed to reflect this.
1 parent 4ef9588 commit 1970ac3

25 files changed

+134
-350
lines changed

config/settings.d/puppet.yml.example

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
11
---
22
# Can be true, false, or http/https to enable just one of the protocols
33
:enabled: false
4+
5+
# URL of the puppet master itself for API requests.
6+
#:puppet_url: https://puppet.example.com:8140
7+
8+
# SSL certificates used to access the puppet API
9+
#:puppet_ssl_ca: /etc/puppetlabs/puppet/ssl/certs/ca.pem
10+
#:puppet_ssl_cert: /etc/puppetlabs/puppet/ssl/certs/puppet.example.com.pem
11+
#:puppet_ssl_key: /etc/puppetlabs/puppet/ssl/private_keys/puppet.example.com.pem
12+
13+
# Smart Proxy api timeout when Puppet's environment classes api is used and classes cache is disabled
14+
#:api_timeout: 30

config/settings.d/puppet_proxy_puppet_api.yml.example

Lines changed: 0 additions & 11 deletions
This file was deleted.

extra/migrations/20160413000000_migrate_puppet_settings.rb

Lines changed: 0 additions & 88 deletions
This file was deleted.

lib/smart_proxy_main.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ module Proxy
6767
require 'puppetca_hostname_whitelisting/puppetca_hostname_whitelisting'
6868
require 'puppetca_token_whitelisting/puppetca_token_whitelisting'
6969
require 'puppet_proxy/puppet'
70-
require 'puppet_proxy_puppet_api/puppet_proxy_puppet_api'
7170
require 'bmc/bmc'
7271
require 'realm/realm'
7372
require 'realm_freeipa/realm_freeipa'

modules/puppet_proxy_puppet_api/v3_api_request.rb renamed to modules/puppet_proxy/apiv3.rb

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
require 'puppet_proxy_common/api_request'
22

3-
module Proxy::PuppetApi
4-
class EnvironmentsApiv3 < ::Proxy::Puppet::ApiRequest
3+
module Proxy::Puppet
4+
class Apiv3 < ::Proxy::Puppet::ApiRequest
5+
NOT_MODIFIED = Object.new
6+
57
def find_environments
68
handle_response(send_request('puppet/v3/environments'), "Failed to query Puppet find environments v3 API")
79
end
8-
end
9-
10-
class EnvironmentClassesApiv3 < ::Proxy::Puppet::ApiRequest
11-
NOT_MODIFIED = Object.new
1210

1311
def list_classes(environment, etag, timeout)
1412
response = send_request("puppet/v3/environment_classes?environment=#{environment}", timeout, "If-None-Match" => etag)
Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,37 @@
11
module ::Proxy::Puppet
22
class ConfigurationLoader
3-
def load_programmable_settings(settings)
4-
settings[:use_provider] = [:puppet_proxy_puppet_api]
5-
settings
6-
end
7-
83
def load_classes
9-
require 'puppet_proxy_common/errors'
4+
require 'puppet_proxy/errors'
105
require 'puppet_proxy/dependency_injection'
116
require 'puppet_proxy/puppet_api'
7+
require 'puppet_proxy/environment'
8+
require 'puppet_proxy/puppet_class'
9+
require 'puppet_proxy_common/api_request'
10+
require 'puppet_proxy/apiv3'
11+
require 'puppet_proxy/v3_environments_retriever'
12+
require 'puppet_proxy/v3_environment_classes_api_classes_retriever'
13+
end
14+
15+
def load_dependency_injection_wirings(container_instance, settings)
16+
container_instance.dependency :environment_retriever_impl,
17+
(lambda do
18+
api = Proxy::Puppet::Apiv3.new(
19+
settings[:puppet_url],
20+
settings[:puppet_ssl_ca],
21+
settings[:puppet_ssl_cert],
22+
settings[:puppet_ssl_key])
23+
::Proxy::Puppet::V3EnvironmentsRetriever.new(api)
24+
end)
25+
26+
container_instance.singleton_dependency :class_retriever_impl,
27+
(lambda do
28+
::Proxy::Puppet::V3EnvironmentClassesApiClassesRetriever.new(
29+
settings[:puppet_url],
30+
settings[:puppet_ssl_ca],
31+
settings[:puppet_ssl_cert],
32+
settings[:puppet_ssl_key],
33+
settings[:api_timeout])
34+
end)
1235
end
1336
end
1437
end

modules/puppet_proxy/puppet_plugin.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ class Plugin < Proxy::Plugin
44

55
plugin :puppet, ::Proxy::VERSION
66

7-
uses_provider
8-
load_programmable_settings ::Proxy::Puppet::ConfigurationLoader
97
load_classes ::Proxy::Puppet::ConfigurationLoader
8+
load_dependency_injection_wirings ::Proxy::Puppet::ConfigurationLoader
9+
10+
default_settings :puppet_ssl_ca => '/etc/puppetlabs/puppet/ssl/certs/ca.pem', :api_timeout => 30
11+
validate :puppet_url, :url => true
12+
expose_setting :puppet_url
13+
validate_readable :puppet_ssl_ca, :puppet_ssl_cert, :puppet_ssl_key
1014
end
1115
end

modules/puppet_proxy_puppet_api/v3_environment_classes_api_classes_retriever.rb renamed to modules/puppet_proxy/v3_environment_classes_api_classes_retriever.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require 'concurrent'
22

3-
class Proxy::PuppetApi::V3EnvironmentClassesApiClassesRetriever
3+
class Proxy::Puppet::V3EnvironmentClassesApiClassesRetriever
44
include ::Proxy::Log
55

66
DEFAULT_CLIENT_TIMEOUT = 15
@@ -18,7 +18,7 @@ def initialize(puppet_url, puppet_ssl_ca, puppet_ssl_cert, puppet_ssl_key, api_t
1818
@puppet_url = puppet_url
1919
@api_timeout = api_timeout
2020
@m = Monitor.new
21-
@puppet_api = api || Proxy::PuppetApi::EnvironmentClassesApiv3
21+
@puppet_api = api || Proxy::Puppet::Apiv3
2222
end
2323

2424
def classes_in_environment(environment)
@@ -84,7 +84,7 @@ def async_get_classes(environment)
8484
raise e
8585
end
8686

87-
if response == Proxy::PuppetApi::EnvironmentClassesApiv3::NOT_MODIFIED
87+
if response == Proxy::Puppet::Apiv3::NOT_MODIFIED
8888
@m.synchronize do
8989
@futures_cache.delete(environment)
9090
logger.debug { "Puppet cache counts: classes %d, etag %d, futures %d" % [@classes_cache.size, @etag_cache.size, @futures_cache.size] }
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module Proxy::Puppet
2+
class V3EnvironmentsRetriever
3+
def initialize(api)
4+
@api = api
5+
end
6+
7+
def get(an_environment)
8+
found = all.find { |e| e.name == an_environment }
9+
raise Proxy::Puppet::EnvironmentNotFound.new("Could not find environment '#{an_environment}'") unless found
10+
found
11+
end
12+
13+
def all
14+
response = @api.find_environments
15+
raise Proxy::Puppet::DataError.new("No environments list in Puppet API response") unless response['environments']
16+
environments = response['environments'].each_with_object({}) do |item, envs|
17+
envs[item.first] = item.last['settings']['modulepath'] if item.last && item.last['settings'] && item.last['settings']['modulepath']
18+
end
19+
environments.map { |env, path| Proxy::Puppet::Environment.new(env, path) }
20+
end
21+
end
22+
end

modules/puppet_proxy_common/environments_retriever_base.rb

Lines changed: 0 additions & 25 deletions
This file was deleted.

modules/puppet_proxy_puppet_api/plugin_configuration.rb

Lines changed: 0 additions & 35 deletions
This file was deleted.

modules/puppet_proxy_puppet_api/puppet_proxy_puppet_api.rb

Lines changed: 0 additions & 2 deletions
This file was deleted.

modules/puppet_proxy_puppet_api/puppet_proxy_puppet_api_plugin.rb

Lines changed: 0 additions & 15 deletions
This file was deleted.

modules/puppet_proxy_puppet_api/v3_environments_retriever.rb

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)