lib/core/heartbeat.rb (22 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'
module Core
class Heartbeat
class << self
def send(connector_settings)
doc = {
:last_seen => Time.now
}
if connector_settings.connector_status_allows_sync?
connector_instance = Connectors::REGISTRY.connector(connector_settings.service_type, connector_settings.configuration)
doc[:status] = connector_instance.is_healthy? ? Connectors::ConnectorStatus::CONNECTED : Connectors::ConnectorStatus::ERROR
message = "Health check for 3d party service failed for connector [#{connector_settings.id}], service type [#{connector_settings.service_type}]. Check the application logs for more information."
doc[:error] = doc[:status] == Connectors::ConnectorStatus::ERROR ? message : nil
end
Core::ElasticConnectorActions.update_connector_fields(connector_settings.id, doc)
end
end
end
end