lib/core/configuration.rb (43 lines of code) (raw):
#
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License;
# you may not use this file except in compliance with the Elastic License.
#
# frozen_string_literal: true
require 'connectors/connector_status'
require 'connectors/registry'
require 'core/connector_settings'
require 'core/elastic_connector_actions'
require 'utility/logger'
module Core
class Configuration
class << self
def update(connector_settings, service_type = nil)
if connector_settings.connector_status == Connectors::ConnectorStatus::CREATED
connector_class = Connectors::REGISTRY.connector_class(connector_settings.service_type || service_type)
unless connector_class
Utility::Logger.error("Couldn't find connector for service type #{connector_settings.service_type || service_type}")
return
end
configuration = connector_class.configurable_fields_indifferent_access
features = {}
connector_class.kibana_features.each do |feature_definition, _hsh|
feature = feature_definition[:feature]
subfeature = feature_definition[:subfeature]
enabled = feature_definition[:enabled]
features[feature] = {} unless features.key?(feature)
features[feature][subfeature] = { :enabled => enabled }
end
doc = {
:configuration => configuration,
:features => features
}
doc[:service_type] = service_type if service_type && connector_settings.needs_service_type?
# We want to set connector to CONFIGURED status if all configurable fields have default values
new_connector_status = if configuration.values.all? { |setting| setting[:value].present? }
Utility::Logger.debug("All connector configurable fields provided default values for #{connector_settings.formatted}.")
Connectors::ConnectorStatus::CONFIGURED
else
Connectors::ConnectorStatus::NEEDS_CONFIGURATION
end
doc[:status] = new_connector_status
Utility::Logger.info("Changing connector status to #{new_connector_status} for #{connector_settings.formatted}.")
Core::ElasticConnectorActions.update_connector_fields(connector_settings.id, doc)
end
end
end
end
end