Method: OpenC3::PeriodicMicroservice#run

Defined in:
lib/openc3/microservices/periodic_microservice.rb

#runObject



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
# File 'lib/openc3/microservices/periodic_microservice.rb', line 32

def run
  @run_sleeper = Sleeper.new
  return if @run_sleeper.sleep(STARTUP_DELAY_SECONDS)
  while true
    models = OfflineAccessModel.get_all_models(scope: @scope)
    models.each do |name, model|
      if model.offline_access_token
        auth = OpenC3KeycloakAuthentication.new(ENV['OPENC3_KEYCLOAK_URL'])
        valid_token = auth.get_token_from_refresh_token(model.offline_access_token)
        if valid_token
          @logger.info("Refreshed offline access token for #{name}")
          model.offline_access_token = auth.refresh_token
        else
          @logger.error("Unable to refresh offline access token for #{name}")
          model.offline_access_token = nil
        end
        model.update
      end
    end
    @count += 1
    @metric.set(name: 'periodic_total', value: @count, type: 'counter')
    break if @cancel_thread
    break if @run_sleeper.sleep(SLEEP_PERIOD_SECONDS)
  end
end