lib/release_tools/promotion/checks/orchestrator_status.rb (49 lines of code) (raw):

# frozen_string_literal: true module ReleaseTools module Promotion module Checks # OrchestratorStatus checks the status of orchestrator class OrchestratorStatus include ::ReleaseTools::Promotion::Check include ::SemanticLogger::Loggable HEADING = ':crystal_ball: GitLab Deployment Orchestrator Status' ORCHESTRATOR_KEY = 'group-delivery/deployment/orchestrator' def consul_client @consul_client ||= ReleaseTools::Consul::Client.new end def fine? return true unless ReleaseTools::Feature.enabled?(:check_orchestrator_status) orchestrator_enabled? end def to_slack_blocks [{ type: 'section', text: mrkdwn(status_message) }] end def to_issue_body status_message end def name 'orchestrator status' end private def status_message "#{icon(self)} Orchestrator is #{fine? ? 'enabled' : 'disabled'}" end def orchestrator_enabled? return @orchestrator_enabled if defined?(@orchestrator_enabled) @orchestrator_enabled ||= begin status = JSON.parse(consul_client.get(ORCHESTRATOR_KEY)) if status['status'] == 'enabled' logger.debug('Orchestrator is enabled', status: status) true else logger.debug('Orchestrator is disabled', status: status) false end rescue StandardError => ex logger.fatal('Failed checking Orchestrator status', ex) false end end end end end end