Sha256: edc42532c7b8ae59691ffecf5498239aa26ff27130a56229d041da4f1c936cd8

Contents?: true

Size: 1.15 KB

Versions: 12

Compression:

Stored size: 1.15 KB

Contents

require "aws-sdk-kms"
require "swa/cli/base_command"
require "swa/cli/collection_behaviour"
require "swa/cli/item_behaviour"
require "swa/kms/alias"
require "swa/kms/key"

module Swa
  module CLI

    class KmsCommand < BaseCommand

      subcommand ["aliases"], "Show aliases" do

        include CollectionBehaviour

        private

        def collection
          query_for(:list_aliases, :aliases, Swa::KMS::Alias)
        end

      end

      subcommand ["key"], "Show key" do

        parameter "ID", "key ID"

        include ItemBehaviour

        private

        def item
          Swa::KMS::Key.new(kms_client.describe_key(:key_id => id).key_metadata)
        end

      end

      subcommand ["keys"], "Show keys" do

        include CollectionBehaviour

        private

        def collection
          query_for(:list_keys, :keys, Swa::KMS::Key)
        end

      end

      protected

      def kms_client
        ::Aws::KMS::Client.new(aws_config)
      end

      def query_for(query_method, response_key, model)
        records = kms_client.public_send(query_method).public_send(response_key)
        model.list(records)
      end

    end

  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
swa-0.8.3 lib/swa/cli/kms_command.rb
swa-0.8.2 lib/swa/cli/kms_command.rb
swa-0.8.1 lib/swa/cli/kms_command.rb
swa-0.8.0 lib/swa/cli/kms_command.rb
swa-0.7.7 lib/swa/cli/kms_command.rb
swa-0.7.6 lib/swa/cli/kms_command.rb
swa-0.7.5 lib/swa/cli/kms_command.rb
swa-0.7.4 lib/swa/cli/kms_command.rb
swa-0.7.3 lib/swa/cli/kms_command.rb
swa-0.7.2 lib/swa/cli/kms_command.rb
swa-0.7.1 lib/swa/cli/kms_command.rb
swa-0.7.0 lib/swa/cli/kms_command.rb