Sha256: 746ede19c094e0a3fb4e3b29dce9d80b994788352c7fe25ef0d09d20011b5a38

Contents?: true

Size: 1.86 KB

Versions: 31

Compression:

Stored size: 1.86 KB

Contents

module ForemanInventoryUpload
  module Generators
    class Tags
      def initialize(host)
        @host = host
      end

      def generate
        (
          locations +
          hostgroups +
          host_collections +
          organizations +
          content_data +
          satellite_server_data
        ).reject { |key, value| value.empty? }.map { |key, value| [key, truncated_value(value)] }
      end

      def generate_parameters
        return [] unless Setting[:include_parameter_tags]

        (@host.host_params || {})
          .select { |_name, value| value.present? || value.is_a?(FalseClass) }
          .map { |key, value| [key, truncated_value(value)] }
      end

      private

      def locations
        return [] unless @host.location
        @host.location.title.split('/').map { |item| ['location', item] }.push(['location', @host.location.title])
      end

      def hostgroups
        return [] unless @host.hostgroup
        @host.hostgroup.title.split('/').map { |item| ['hostgroup', item] }.push(['hostgroup', @host.hostgroup.title])
      end

      def host_collections
        (@host.host_collections || []).map { |item| ['host collection', item.name] }
      end

      def organizations
        [['organization', @host.organization.name]]
      end

      def content_data
        [
          ['lifecycle_environment', @host.lifecycle_environment&.name],
          ['content_view', @host.content_view&.name],
        ] +
        (@host.activation_keys || []).map { |item| ['activation_key', item.name] }
      end

      def satellite_server_data
        [
          ['satellite_instance_id', Foreman.instance_id],
          ['organization_id', @host.organization_id.to_s],
        ]
      end

      def truncated_value(value)
        return 'Original value exceeds 250 characters' if value.to_s.length > 250

        value
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
foreman_rh_cloud-7.0.48 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-7.0.47 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-6.0.45 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-5.0.46 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-5.0.45 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-7.0.46 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-5.0.44 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-7.0.45 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-6.0.44 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-5.0.43 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-4.0.36 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-6.0.42.2 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-6.0.42.1 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-6.0.43 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-5.0.42 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-6.0.42 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-5.0.41 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-5.0.39 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-5.0.38 lib/foreman_inventory_upload/generators/tags.rb
foreman_rh_cloud-4.0.35 lib/foreman_inventory_upload/generators/tags.rb