Sha256: 489d92400f95329d7320291f979e536b7f1bf97f5119fe143e5ff0447cb7246d

Contents?: true

Size: 1.73 KB

Versions: 5

Compression:

Stored size: 1.73 KB

Contents

require 'io/console'

namespace :rh_cloud do |args|
  desc 'Register Satellite Organization with Hybrid Cloud API. \
        Specify org_id=x replace your organization ID with x. \
        Specify SATELLITE_RH_CLOUD_URL=https://x with the Hybrid Cloud endpoint you are connecting to.'
  task hybridcloud_register: [:environment] do
    include ::ForemanRhCloud::CertAuth
    include ::InsightsCloud::CandlepinCache
    
    def logger
      @logger ||= Logger.new(STDOUT)
    end

    def registrations_url
      logger.warn("Custom url is not set, using the default one: #{ForemanRhCloud.base_url}") if ENV['SATELLITE_RH_CLOUD_URL'].empty?
      ForemanRhCloud.base_url + '/api/identity/certificate/registrations'
    end

    if ENV['org_id'].nil?
      logger.error('ERROR: org_id needs to be specified.')
      exit(1)
    end
    
    organization = Organization.find_by(id: ENV['org_id'].to_i) # saw this coming in as a string, so making sure it gets passed as an integer.
    
    @uid = cp_owner_id(organization)
    logger.error('Organization provided does not have a manifest imported.') + exit(1) if @uid.nil?

    puts 'Paste your token, output will be hidden.'
    @token = STDIN.noecho(&:gets).chomp
    logger.error('Token was not entered.') + exit(1) if @token.empty?

    def headers
      {
        Authorization: "Bearer #{@token}"
      }
    end

    def payload
      {
        "uid": @uid
      }
    end

    def method
      :post
    end

    begin
      response = execute_cloud_request(
        organization: organization,
        method: method,
        url: registrations_url,
        headers: headers,
        payload: payload.to_json
      )
      logger.debug(response)
    rescue Exception => ex
      logger.error(ex)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman_rh_cloud-7.0.48 lib/tasks/hybrid_cloud.rake
foreman_rh_cloud-7.0.47 lib/tasks/hybrid_cloud.rake
foreman_rh_cloud-8.0.46 lib/tasks/hybrid_cloud.rake
foreman_rh_cloud-5.0.45 lib/tasks/hybrid_cloud.rake
foreman_rh_cloud-7.0.46 lib/tasks/hybrid_cloud.rake