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