-
Notifications
You must be signed in to change notification settings - Fork 661
Description
Summary
PR #2654 ("Add scheduled metrics cleanup job") introduced a call to config.metrics_dir in bin/bosh-director, but metrics_dir is only defined as a class method (inside class << self). When called on a Config instance, the director crashes on startup:
bin/bosh-director:32:in `block in <top (required)>': undefined method `metrics_dir' for an instance of Bosh::Director::Config (NoMethodError)
Prometheus::Client.config.data_store = Prometheus::Client::DataStores::DirectFileStore.new(dir: config.metrics_dir)
^^^^^^^^^^^^
Details
In src/bosh-director/lib/bosh/director/config.rb, metrics_dir is defined inside class << self (class method):
class << self
# ...
def metrics_dir
File.join(@base_dir, 'metrics')
end
endBut in src/bosh-director/bin/bosh-director, it is called on an instance returned by Config.load_file:
config = Bosh::Director::Config.load_file(config_file)
# ...
if config.metrics_server_enabled
Prometheus::Client.config.data_store = Prometheus::Client::DataStores::DirectFileStore.new(dir: config.metrics_dir)
endThe sibling methods metrics_server_enabled and metrics_server_port are correctly defined as instance methods, but metrics_dir was only added at the class level.
Introduced by
- Commit: 717a4ea
- PR: Add scheduled metrics cleanup job #2654
Expected fix
Add an instance-level metrics_dir method alongside the other instance-level metrics methods:
def metrics_dir
File.join(hash['dir'], 'metrics')
endImpact
The director fails to start when metrics_server.enabled is true in the director config. This blocks all BOSH operations.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status