Bug #17942
closedTimeout during Puppet class import, slow re-initialization of Puppet 3
Description
I'm not able to import Puppet classes or environments from foreman-proxy. The foreman-proxy is running on the puppetmaster, and plugins "puppet" and "puppetca" have been enabled on this smart proxy. There is a timeout. I tried to query the proxy directly with curl with a tcpdump running and nothing but Keepalive messages are seen on the wire.
For example :
URL=puppet/environments
PORT=8000
time curl http://vmctldeploy10.rsvgnw.local:${PORT}/${URL}
["admybr","testing","production","lab"]
But if my URL is this, I never get an answer :
URL=puppet/environments/production/classes
In the Foreman WebUI, it's just waiting when I try either to import classes, import environnments, or query the foreman-proxy.
In the example above, I switched to HTTP on port 8000 instead of HTTPS/8443 in the hope of eliminating SSL issues, so the proxy is listening on both protocols, but the behaviour is the same.
I've spent quite some time on this and I can't find the error, it seems I'm the only one to have this.
Some other errors appears in the foreman server log as well, for example ERF50-5345 :
2017-01-05 07:43:09 4382433b [app] [I] Redirected to https://vmctldeploy30.rsvgnw.local/environments
2017-01-05 07:43:09 4382433b [app] [W] ProxyAPI operation FAILED
| ProxyAPI::ProxyException: ERF12-4115 [ProxyAPI::ProxyException]: Unable to get classes from Puppet for lab ([RestClient::RequestTimeout]: Request Timeout) for proxy https://vmctldeploy10.rsvgnw.local:8443/puppet
| /usr/share/foreman/lib/proxy_api/puppet.rb:27:in `rescue in classes'
| /usr/share/foreman/lib/proxy_api/puppet.rb:21:in `classes'
| /usr/share/foreman/app/services/puppet_class_importer.rb:153:in `actual_classes'
| /usr/share/foreman/app/services/puppet_class_importer.rb:77:in `new_classes_for'
| /usr/share/foreman/app/services/puppet_class_importer.rb:24:in `block in changes'
--
2017-01-05 14:00:34 f8013754 [app] [I] Completed 200 OK in 31964ms (Views: 33.8ms | ActiveRecord: 27.0ms)
2017-01-05 14:00:34 f8013754 [app] [W] Failed to counts
| Foreman::WrappedException: ERF50-5345 [Foreman::WrappedException]: Unable to connect ([ProxyAPI::ProxyException]: ERF12-5356 [ProxyAPI::ProxyException]: Unable to get PuppetCA certificates ([RestClient...)
| /usr/share/foreman/app/services/proxy_status/base.rb:55:in `rescue in fetch_proxy_data'
| /usr/share/foreman/app/services/proxy_status/base.rb:47:in `fetch_proxy_data'
| /usr/share/foreman/app/services/proxy_status/puppetca.rb:4:in `certs'
| /usr/share/foreman/app/controllers/puppetca_controller.rb:12:in `counts'
| /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
--
2017-01-05 14:00:35 f8013754 [app] [I] Completed 200 OK in 29380ms (Views: 607.0ms | ActiveRecord: 9.1ms)
2017-01-05 14:20:14 f8013754 [app] [W] Failed to puppet_environments
| Foreman::WrappedException: ERF50-5345 [Foreman::WrappedException]: Unable to connect ([ProxyAPI::ProxyException]: ERF12-4115 [ProxyAPI::ProxyException]: Unable to get classes from Puppet for admybr ([R...)
| /usr/share/foreman/app/services/proxy_status/base.rb:55:in `rescue in fetch_proxy_data'
| /usr/share/foreman/app/services/proxy_status/base.rb:47:in `fetch_proxy_data'
| /usr/share/foreman/app/services/proxy_status/puppet.rb:4:in `environment_stats'
| /usr/share/foreman/app/controllers/smart_proxies_controller.rb:59:in `puppet_environments'
| /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
--
2017-01-05 16:34:44 f8013754 [app] [I] Redirected to https://vmctldeploy30.rsvgnw.local/environments
2017-01-05 16:34:44 f8013754 [app] [W] ProxyAPI operation FAILED
| ProxyAPI::ProxyException: ERF12-4115 [ProxyAPI::ProxyException]: Unable to get classes from Puppet for admybr ([RestClient::RequestTimeout]: Request Timeout) for proxy https://vmctldeploy10.rsvgnw.local:8443/puppet
| /usr/share/foreman/lib/proxy_api/puppet.rb:27:in `rescue in classes'
| /usr/share/foreman/lib/proxy_api/puppet.rb:21:in `classes'
| /usr/share/foreman/app/services/puppet_class_importer.rb:153:in `actual_classes'
| /usr/share/foreman/app/services/puppet_class_importer.rb:77:in `new_classes_for'
| /usr/share/foreman/app/services/puppet_class_importer.rb:38:in `changes'
Files