Sha256: f6aaba9a67613954e0d3d8c57e17799f6a4a58f25eb93824f2178b55343aa8e7

Contents?: true

Size: 1.77 KB

Versions: 13

Compression:

Stored size: 1.77 KB

Contents

module ForemanSalt
  module SmartProxies
    class SaltKeys
      attr_reader :name, :state, :fingerprint, :smart_proxy_id

      def initialize(opts)
        @name, @state, @fingerprint, @smart_proxy_id = opts.flatten
      end

      class << self
        def all(proxy)
          raise ::Foreman::Exception, N_('Must specify a Smart Proxy to use') if proxy.nil?

          unless (keys = Rails.cache.read("saltkeys_#{proxy.id}"))
            api = ProxyAPI::Salt.new(url: proxy.url)
            keys = api.key_list.map do |name, properties|
              new([name.strip, properties['state'], properties['fingerprint'], proxy.id])
            end.compact

            Rails.cache.write("saltkeys_#{proxy.id}", keys, expires_in: 1.minute) if Rails.env.production?
          end
          keys
        end

        def find(proxy, name)
          all(proxy).find { |c| c.name == name }
        end

        def find_by_state(proxy, state)
          all(proxy).select { |c| c.state == state }
        end
      end

      def accept
        proxy = SmartProxy.find(smart_proxy_id)
        Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
        ProxyAPI::Salt.new(url: proxy.url).key_accept name
      end

      def reject
        proxy = SmartProxy.find(smart_proxy_id)
        Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
        ProxyAPI::Salt.new(url: proxy.url).key_reject name
      end

      def delete
        proxy = SmartProxy.find(smart_proxy_id)
        Rails.cache.delete("saltkeys_#{proxy.id}") if Rails.env.production?
        ProxyAPI::Salt.new(url: proxy.url).key_delete name
      end

      def to_param
        name
      end

      def to_s
        name
      end

      def <=>(other)
        name <=> other.name
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
foreman_salt-17.0.1 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-17.0.0 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-16.0.3 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-16.0.2 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-16.0.1 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-16.0.0 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-15.2.3 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-15.2.2 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-15.2.1 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-15.2.0 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-15.1.0 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-15.0.0 app/services/foreman_salt/smart_proxies/salt_keys.rb
foreman_salt-14.1.0 app/services/foreman_salt/smart_proxies/salt_keys.rb