Skip to content

Commit

Permalink
(puppetlabsGH-40) Use sidecar to retrieve puppet information
Browse files Browse the repository at this point in the history
Previously a sidecar process was introduced to query puppet for information,
however the Language Server was yet to take advantage of it.  This commit
modifies the Puppet Helper in the Language Server to use the sidecar instead.

This commit also uses a queueing mechanism to throttle the sidecar and ensure
that if there are duplicate sidecar requests, only the most recent is processed.
This ensures that that CPU and memory use is capped, but still maintains a good
repsonse time and user experience.
  • Loading branch information
glennsarti committed Oct 3, 2018
1 parent 5f0d0cb commit bcbb09f
Show file tree
Hide file tree
Showing 18 changed files with 683 additions and 1,262 deletions.
9 changes: 5 additions & 4 deletions lib/puppet-languageserver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
validation_queue
server_capabilities
sidecar_protocol
sidecar_queue
puppet_parser_helper
puppet_helper
facter_helper
Expand Down Expand Up @@ -151,17 +152,17 @@ def self.init_puppet_worker(options)

log_message(:info, "Using Facter v#{Facter.version}")
if options[:preload_puppet]
log_message(:info, 'Preloading Puppet Types (Sync)...')
PuppetLanguageServer::PuppetHelper.load_types
log_message(:info, 'Preloading Puppet Types (Async)...')
PuppetLanguageServer::PuppetHelper.load_default_types_async

log_message(:info, 'Preloading Facter (Async)...')
PuppetLanguageServer::FacterHelper.load_facts_async

log_message(:info, 'Preloading Functions (Async)...')
PuppetLanguageServer::PuppetHelper.load_functions_async
PuppetLanguageServer::PuppetHelper.load_default_functions_async

log_message(:info, 'Preloading Classes (Async)...')
PuppetLanguageServer::PuppetHelper.load_classes_async
PuppetLanguageServer::PuppetHelper.load_default_classes_async
else
log_message(:info, 'Skipping preloading Puppet')
end
Expand Down
6 changes: 3 additions & 3 deletions lib/puppet-languageserver/message_router.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ def receive_request(request)
request.reply_result(LanguageServer::PuppetVersion.create('puppetVersion' => Puppet.version,
'facterVersion' => Facter.version,
'factsLoaded' => PuppetLanguageServer::FacterHelper.facts_loaded?,
'functionsLoaded' => PuppetLanguageServer::PuppetHelper.functions_loaded?,
'typesLoaded' => PuppetLanguageServer::PuppetHelper.types_loaded?,
'classesLoaded' => PuppetLanguageServer::PuppetHelper.classes_loaded?))
'functionsLoaded' => PuppetLanguageServer::PuppetHelper.default_functions_loaded?,
'typesLoaded' => PuppetLanguageServer::PuppetHelper.default_types_loaded?,
'classesLoaded' => PuppetLanguageServer::PuppetHelper.default_classes_loaded?))

when 'puppet/getResource'
type_name = request.params['typename']
Expand Down
Loading

0 comments on commit bcbb09f

Please sign in to comment.