Sha256: 4b9cdd5aadb9badb753adca6e819161c3629815396ced43fcfb1c391e78444d4

Contents?: true

Size: 1.46 KB

Versions: 10

Compression:

Stored size: 1.46 KB

Contents

require 'rest-client'

module ForemanRhCloud
  class CloudPingService
    class CertPing
      include ForemanRhCloud::CloudRequest
      include InsightsCloud::CandlepinCache

      attr_accessor :logger

      def initialize(org, logger)
        @org = org
        @logger = logger
      end

      def ping
        certs = candlepin_id_cert(@org)
        return StandardError.new('certificate missing') unless certs

        cert_checker = Katello::UpstreamConnectionChecker.new(@org)
        cert_checker.assert_connection

        execute_cloud_request(
          method: :get,
          url: ForemanRhCloud.cert_base_url + "/api/apicast-tests/ping",
          headers: {
            content_type: :json,
          },
          ssl_client_cert: OpenSSL::X509::Certificate.new(certs[:cert]),
          ssl_client_key: OpenSSL::PKey::RSA.new(certs[:key])
        )
      rescue StandardError => ex
        ex
      end
    end

    def initialize(organizations, logger)
      @organizations = organizations
      @logger = logger
    end

    def ping
      {
        cert_auth: Hash[
          @organizations.map do |org|
            cert_response = CertPing.new(org, @logger).ping
            [
              org,
              {
                success: cert_response.is_a?(RestClient::Response),
                error: (cert_response.is_a?(Exception) ? cert_response&.message || cert_response.inspect : nil),
              },
            ]
          end
        ],
      }
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
foreman_rh_cloud-5.0.46 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.45 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.44 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.43 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.42 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.41 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.39 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.38 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.37 app/services/foreman_rh_cloud/cloud_ping_service.rb
foreman_rh_cloud-5.0.36 app/services/foreman_rh_cloud/cloud_ping_service.rb