connectors_utility 8.5.0.0 → 8.6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/connectors/crawler/scheduler.rb +6 -0
- data/lib/core/scheduler.rb +31 -9
- data/lib/utility/exception_tracking.rb +2 -2
- data/lib/utility/logger.rb +27 -1
- metadata +26 -40
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e2ca64052bb1f5b2fc108b3610293b26783d42dc7aa957426bad95415d456527
         | 
| 4 | 
            +
              data.tar.gz: c40091f7500e1ef3c39336e1f44a92e6ba9663ad26849af79283543283c3106b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ca920820800ac34e4e3338c3d0c06799b6e18dcaefd588ef6830bbf5062c453ac30532622dc416b3949e831aee5dd683db68d1227fc2c3ce25bf17ec0ce7da25
         | 
| 7 | 
            +
              data.tar.gz: 706728e5dc9e7c0c2dbb6dcdeba46f8efa4efe8ee42028adb47256de710702d928095143f261d92e257ae123797e0e6f9c2da918cf54c76979e70acf1fead187
         | 
| @@ -21,6 +21,12 @@ module Connectors | |
| 21 21 | 
             
                    Utility::ExceptionTracking.log_exception(e, 'Could not retrieve Crawler connectors due to unexpected error.')
         | 
| 22 22 | 
             
                    []
         | 
| 23 23 | 
             
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  private
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  def connector_registered?(service_type)
         | 
| 28 | 
            +
                    service_type == 'elastic-crawler'
         | 
| 29 | 
            +
                  end
         | 
| 24 30 | 
             
                end
         | 
| 25 31 | 
             
              end
         | 
| 26 32 | 
             
            end
         | 
    
        data/lib/core/scheduler.rb
    CHANGED
    
    | @@ -45,7 +45,7 @@ module Core | |
| 45 45 | 
             
                    Utility::ExceptionTracking.log_exception(e, 'Sync failed due to unexpected error.')
         | 
| 46 46 | 
             
                  ensure
         | 
| 47 47 | 
             
                    if @poll_interval > 0 && !@is_shutting_down
         | 
| 48 | 
            -
                      Utility::Logger. | 
| 48 | 
            +
                      Utility::Logger.debug("Sleeping for #{@poll_interval} seconds in #{self.class}.")
         | 
| 49 49 | 
             
                      sleep(@poll_interval)
         | 
| 50 50 | 
             
                    end
         | 
| 51 51 | 
             
                  end
         | 
| @@ -59,29 +59,36 @@ module Core | |
| 59 59 | 
             
                private
         | 
| 60 60 |  | 
| 61 61 | 
             
                def sync_triggered?(connector_settings)
         | 
| 62 | 
            +
                  return false unless connector_registered?(connector_settings.service_type)
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  unless connector_settings.valid_index_name?
         | 
| 65 | 
            +
                    Utility::Logger.warn("The index name of #{connector_settings.formatted} is invalid.")
         | 
| 66 | 
            +
                    return false
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
             | 
| 62 69 | 
             
                  unless connector_settings.connector_status_allows_sync?
         | 
| 63 | 
            -
                    Utility::Logger.info(" | 
| 70 | 
            +
                    Utility::Logger.info("#{connector_settings.formatted.capitalize} is in status \"#{connector_settings.connector_status}\" and won't sync yet. Connector needs to be in one of the following statuses: #{Connectors::ConnectorStatus::STATUSES_ALLOWING_SYNC} to run.")
         | 
| 64 71 |  | 
| 65 72 | 
             
                    return false
         | 
| 66 73 | 
             
                  end
         | 
| 67 74 |  | 
| 68 75 | 
             
                  # Sync when sync_now flag is true for the connector
         | 
| 69 76 | 
             
                  if connector_settings[:sync_now] == true
         | 
| 70 | 
            -
                    Utility::Logger.info(" | 
| 77 | 
            +
                    Utility::Logger.info("#{connector_settings.formatted.capitalize} is manually triggered to sync now.")
         | 
| 71 78 | 
             
                    return true
         | 
| 72 79 | 
             
                  end
         | 
| 73 80 |  | 
| 74 81 | 
             
                  # Don't sync if sync is explicitly disabled
         | 
| 75 82 | 
             
                  scheduling_settings = connector_settings.scheduling_settings
         | 
| 76 83 | 
             
                  unless scheduling_settings.present? && scheduling_settings[:enabled] == true
         | 
| 77 | 
            -
                    Utility::Logger. | 
| 84 | 
            +
                    Utility::Logger.debug("#{connector_settings.formatted.capitalize} scheduling is disabled.")
         | 
| 78 85 | 
             
                    return false
         | 
| 79 86 | 
             
                  end
         | 
| 80 87 |  | 
| 81 88 | 
             
                  # We want to sync when sync never actually happened
         | 
| 82 89 | 
             
                  last_synced = connector_settings[:last_synced]
         | 
| 83 90 | 
             
                  if last_synced.nil? || last_synced.empty?
         | 
| 84 | 
            -
                    Utility::Logger.info(" | 
| 91 | 
            +
                    Utility::Logger.info("#{connector_settings.formatted.capitalize} has never synced yet, running initial sync.")
         | 
| 85 92 | 
             
                    return true
         | 
| 86 93 | 
             
                  end
         | 
| 87 94 |  | 
| @@ -89,7 +96,7 @@ module Core | |
| 89 96 |  | 
| 90 97 | 
             
                  # Don't sync if there is no actual scheduling interval
         | 
| 91 98 | 
             
                  if current_schedule.nil? || current_schedule.empty?
         | 
| 92 | 
            -
                    Utility::Logger.warn("No sync schedule configured for  | 
| 99 | 
            +
                    Utility::Logger.warn("No sync schedule configured for #{connector_settings.formatted}.")
         | 
| 93 100 | 
             
                    return false
         | 
| 94 101 | 
             
                  end
         | 
| 95 102 |  | 
| @@ -103,7 +110,7 @@ module Core | |
| 103 110 |  | 
| 104 111 | 
             
                  # Don't sync if the scheduling interval is non-parsable
         | 
| 105 112 | 
             
                  unless cron_parser
         | 
| 106 | 
            -
                    Utility::Logger.error("Unable to parse sync schedule for  | 
| 113 | 
            +
                    Utility::Logger.error("Unable to parse sync schedule for #{connector_settings.formatted}: expression #{current_schedule} is not a valid Quartz Cron definition.")
         | 
| 107 114 | 
             
                    return false
         | 
| 108 115 | 
             
                  end
         | 
| 109 116 |  | 
| @@ -111,7 +118,7 @@ module Core | |
| 111 118 |  | 
| 112 119 | 
             
                  # Sync if next trigger for the connector is in past
         | 
| 113 120 | 
             
                  if next_trigger_time < Time.now
         | 
| 114 | 
            -
                    Utility::Logger.info(" | 
| 121 | 
            +
                    Utility::Logger.info("#{connector_settings.formatted.capitalize} sync is triggered by cron schedule #{current_schedule}.")
         | 
| 115 122 | 
             
                    return true
         | 
| 116 123 | 
             
                  end
         | 
| 117 124 |  | 
| @@ -119,6 +126,8 @@ module Core | |
| 119 126 | 
             
                end
         | 
| 120 127 |  | 
| 121 128 | 
             
                def heartbeat_triggered?(connector_settings)
         | 
| 129 | 
            +
                  return false unless connector_registered?(connector_settings.service_type)
         | 
| 130 | 
            +
             | 
| 122 131 | 
             
                  last_seen = connector_settings[:last_seen]
         | 
| 123 132 | 
             
                  return true if last_seen.nil? || last_seen.empty?
         | 
| 124 133 | 
             
                  last_seen = begin
         | 
| @@ -132,7 +141,20 @@ module Core | |
| 132 141 | 
             
                end
         | 
| 133 142 |  | 
| 134 143 | 
             
                def configuration_triggered?(connector_settings)
         | 
| 135 | 
            -
                  connector_settings. | 
| 144 | 
            +
                  if connector_settings.needs_service_type? || connector_registered?(connector_settings.service_type)
         | 
| 145 | 
            +
                    return connector_settings.connector_status == Connectors::ConnectorStatus::CREATED
         | 
| 146 | 
            +
                  end
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                  false
         | 
| 149 | 
            +
                end
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                def connector_registered?(service_type)
         | 
| 152 | 
            +
                  if Connectors::REGISTRY.registered?(service_type)
         | 
| 153 | 
            +
                    true
         | 
| 154 | 
            +
                  else
         | 
| 155 | 
            +
                    Utility::Logger.info("The service type (#{service_type}) is not supported.")
         | 
| 156 | 
            +
                    false
         | 
| 157 | 
            +
                  end
         | 
| 136 158 | 
             
                end
         | 
| 137 159 | 
             
              end
         | 
| 138 160 | 
             
            end
         | 
| @@ -21,13 +21,13 @@ module Utility | |
| 21 21 | 
             
                  end
         | 
| 22 22 |  | 
| 23 23 | 
             
                  def capture_exception(exception, context = {})
         | 
| 24 | 
            -
                    Utility::Logger. | 
| 24 | 
            +
                    Utility::Logger.log_stacktrace(generate_stack_trace(exception))
         | 
| 25 25 | 
             
                    Utility::Logger.error("Context: #{context.inspect}") if context
         | 
| 26 26 | 
             
                  end
         | 
| 27 27 |  | 
| 28 28 | 
             
                  def log_exception(exception, message = nil)
         | 
| 29 29 | 
             
                    Utility::Logger.error(message) if message
         | 
| 30 | 
            -
                    Utility::Logger. | 
| 30 | 
            +
                    Utility::Logger.log_stacktrace(generate_stack_trace(exception))
         | 
| 31 31 | 
             
                  end
         | 
| 32 32 |  | 
| 33 33 | 
             
                  def augment_exception(exception)
         | 
    
        data/lib/utility/logger.rb
    CHANGED
    
    | @@ -29,13 +29,21 @@ module Utility | |
| 29 29 | 
             
                  SUPPORTED_LOG_LEVELS.each do |level|
         | 
| 30 30 | 
             
                    define_method(level) do |message|
         | 
| 31 31 | 
             
                      if logger.is_a?(EcsLogging::Logger)
         | 
| 32 | 
            -
                        logger.public_send(level, message,  | 
| 32 | 
            +
                        logger.public_send(level, message, extra_ecs_fields)
         | 
| 33 33 | 
             
                      else
         | 
| 34 34 | 
             
                        logger.public_send(level, message)
         | 
| 35 35 | 
             
                      end
         | 
| 36 36 | 
             
                    end
         | 
| 37 37 | 
             
                  end
         | 
| 38 38 |  | 
| 39 | 
            +
                  def log_stacktrace(stacktrace)
         | 
| 40 | 
            +
                    if logger.is_a?(EcsLogging::Logger)
         | 
| 41 | 
            +
                      logger.error(nil, extra_ecs_fields.merge(:error => { :stack_trace => stacktrace }))
         | 
| 42 | 
            +
                    else
         | 
| 43 | 
            +
                      logger.error(stacktrace)
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 39 47 | 
             
                  def error_with_backtrace(message: nil, exception: nil, prog_name: nil)
         | 
| 40 48 | 
             
                    logger.error(prog_name) { message } if message
         | 
| 41 49 | 
             
                    logger.error exception.message if exception
         | 
| @@ -53,6 +61,24 @@ module Utility | |
| 53 61 | 
             
                  def abbreviated_message(message)
         | 
| 54 62 | 
             
                    message.gsub(/\s+/, ' ').strip.truncate(MAX_SHORT_MESSAGE_LENGTH)
         | 
| 55 63 | 
             
                  end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                  private
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  def extra_ecs_fields
         | 
| 68 | 
            +
                    {
         | 
| 69 | 
            +
                      :labels => { :index_date => Time.now.strftime('%Y.%m.%d') },
         | 
| 70 | 
            +
                      :log => { :logger => logger.progname },
         | 
| 71 | 
            +
                      :service => {
         | 
| 72 | 
            +
                        :type => 'connectors-ruby',
         | 
| 73 | 
            +
                        :version => Settings.version
         | 
| 74 | 
            +
                      },
         | 
| 75 | 
            +
                      :process => {
         | 
| 76 | 
            +
                        :pid => Process.pid,
         | 
| 77 | 
            +
                        :name => $PROGRAM_NAME,
         | 
| 78 | 
            +
                        :thread => Thread.current.object_id
         | 
| 79 | 
            +
                      }
         | 
| 80 | 
            +
                    }
         | 
| 81 | 
            +
                  end
         | 
| 56 82 | 
             
                end
         | 
| 57 83 | 
             
              end
         | 
| 58 84 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,71 +1,71 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: connectors_utility
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 8. | 
| 4 | 
            +
              version: 8.6.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Elastic
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2022-09- | 
| 11 | 
            +
            date: 2022-09-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 14 | 
            +
              name: activesupport
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version:  | 
| 19 | 
            +
                    version: 5.2.6
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version:  | 
| 26 | 
            +
                    version: 5.2.6
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name:  | 
| 28 | 
            +
              name: ecs-logging
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version:  | 
| 33 | 
            +
                    version: 1.0.0
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version:  | 
| 40 | 
            +
                    version: 1.0.0
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name:  | 
| 42 | 
            +
              name: fugit
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 | 
            -
                - -  | 
| 45 | 
            +
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version:  | 
| 47 | 
            +
                    version: 1.5.3
         | 
| 48 48 | 
             
              type: :runtime
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 | 
            -
                - -  | 
| 52 | 
            +
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version:  | 
| 54 | 
            +
                    version: 1.5.3
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name:  | 
| 56 | 
            +
              name: mime-types
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 | 
            -
                - -  | 
| 59 | 
            +
                - - '='
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: ' | 
| 61 | 
            +
                    version: '3.1'
         | 
| 62 62 | 
             
              type: :runtime
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 | 
            -
                - -  | 
| 66 | 
            +
                - - '='
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: ' | 
| 68 | 
            +
                    version: '3.1'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: tzinfo
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -81,33 +81,19 @@ dependencies: | |
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 82 | 
             
                    version: '0'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name:  | 
| 84 | 
            +
              name: tzinfo-data
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 87 | 
             
                - - ">="
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version:  | 
| 89 | 
            +
                    version: '0'
         | 
| 90 90 | 
             
              type: :runtime
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 94 | 
             
                - - ">="
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version:  | 
| 97 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name: fugit
         | 
| 99 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 | 
            -
                requirements:
         | 
| 101 | 
            -
                - - "~>"
         | 
| 102 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: 1.5.3
         | 
| 104 | 
            -
              type: :runtime
         | 
| 105 | 
            -
              prerelease: false
         | 
| 106 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 | 
            -
                requirements:
         | 
| 108 | 
            -
                - - "~>"
         | 
| 109 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: 1.5.3
         | 
| 96 | 
            +
                    version: '0'
         | 
| 111 97 | 
             
            description: ''
         | 
| 112 98 | 
             
            email: ent-search-dev@elastic.co
         | 
| 113 99 | 
             
            executables: []
         | 
| @@ -139,9 +125,9 @@ homepage: https://github.com/elastic/connectors-ruby | |
| 139 125 | 
             
            licenses:
         | 
| 140 126 | 
             
            - Elastic-2.0
         | 
| 141 127 | 
             
            metadata:
         | 
| 142 | 
            -
              revision:  | 
| 143 | 
            -
              repository:  | 
| 144 | 
            -
            post_install_message: | 
| 128 | 
            +
              revision: d6342a5a66d1f3361ce4a2621d2cf64bad9c8a1c
         | 
| 129 | 
            +
              repository: https://github.com/elastic/connectors-ruby.git
         | 
| 130 | 
            +
            post_install_message:
         | 
| 145 131 | 
             
            rdoc_options: []
         | 
| 146 132 | 
             
            require_paths:
         | 
| 147 133 | 
             
            - lib
         | 
| @@ -157,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 157 143 | 
             
                  version: '0'
         | 
| 158 144 | 
             
            requirements: []
         | 
| 159 145 | 
             
            rubygems_version: 3.0.3.1
         | 
| 160 | 
            -
            signing_key: | 
| 146 | 
            +
            signing_key:
         | 
| 161 147 | 
             
            specification_version: 4
         | 
| 162 148 | 
             
            summary: Gem containing shared Connector Services libraries
         | 
| 163 149 | 
             
            test_files: []
         |