19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/core/configuration.rb', line 19
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?
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
|