awful 0.0.40 → 0.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/lambda +7 -0
- data/lib/awful/lambda.rb +134 -0
- data/lib/awful/version.rb +1 -1
- metadata +6 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 83b5b77becbd5727d13cc06dedbba8c9b4ad273c
         | 
| 4 | 
            +
              data.tar.gz: 5cd0d08da6544763f9f5f660434000cb11db8b72
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e0faed7b9c2f5afdeb582b65a96195dcde7fd7e9dd951526bd94a74661236a170f53fc23b705d3d44e4712456147ab72adfcc44b980c5756ea4c73fb5dfa650f
         | 
| 7 | 
            +
              data.tar.gz: 3239f983c1fd56f39a8e2fff742ee36118f35f03baf2a49a608798dc73863c44d299f4c1aa9d4b9f9d2819df81df7bca9cc9890ed1a80a012c9c697ee4ab5b25
         | 
    
        data/bin/lambda
    ADDED
    
    
    
        data/lib/awful/lambda.rb
    ADDED
    
    | @@ -0,0 +1,134 @@ | |
| 1 | 
            +
            require 'open-uri'
         | 
| 2 | 
            +
            require 'tempfile'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Awful
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              class Lambda < Cli
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                no_commands do
         | 
| 9 | 
            +
                  def lambda
         | 
| 10 | 
            +
                    @lambda ||= Aws::Lambda::Client.new
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  ## return zip file contents, make it if necessary
         | 
| 14 | 
            +
                  def zip_thing(thing)
         | 
| 15 | 
            +
                    if File.directory?(thing)
         | 
| 16 | 
            +
                      Dir.chdir(thing) do
         | 
| 17 | 
            +
                        %x[zip -q -r - .]      # zip dir contents
         | 
| 18 | 
            +
                      end
         | 
| 19 | 
            +
                    elsif thing.match(/\.zip$/i)
         | 
| 20 | 
            +
                      File.read(thing)         # raw zipfile contents
         | 
| 21 | 
            +
                    elsif File.file?(thing)
         | 
| 22 | 
            +
                      %x[zip -q -j - #{thing}] # zip a single file
         | 
| 23 | 
            +
                    else
         | 
| 24 | 
            +
                      nil
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                desc 'ls NAME', 'list lambda functions matching NAME pattern'
         | 
| 30 | 
            +
                method_option :long, aliases: '-l', default: false, desc: 'Long listing'
         | 
| 31 | 
            +
                method_option :arns, aliases: '-a', default: false, desc: 'List ARNs for functions'
         | 
| 32 | 
            +
                def ls(name = /./)
         | 
| 33 | 
            +
                  lambda.list_functions.functions.select do |function|
         | 
| 34 | 
            +
                    function.function_name.match(name)
         | 
| 35 | 
            +
                  end.tap do |functions|
         | 
| 36 | 
            +
                    if options[:long]
         | 
| 37 | 
            +
                      print_table functions.map { |f| [f.function_name, f.description, f.last_modified] }.sort
         | 
| 38 | 
            +
                    elsif options[:arns]
         | 
| 39 | 
            +
                      puts functions.map(&:function_arn).sort
         | 
| 40 | 
            +
                    else
         | 
| 41 | 
            +
                      puts functions.map(&:function_name).sort
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                desc 'create', 'create a new lambda function'
         | 
| 47 | 
            +
                def create(name = nil)
         | 
| 48 | 
            +
                  opt = load_cfg
         | 
| 49 | 
            +
                  opt[:function_name] = name unless name.nil?
         | 
| 50 | 
            +
                  opt[:code][:zip_file] = zip_thing(opt[:code][:zip_file])
         | 
| 51 | 
            +
                  whitelist = %i[function_name runtime role handler description timeout memory_size code]
         | 
| 52 | 
            +
                  lambda.create_function(only_keys_matching(opt, whitelist)).tap do |response|
         | 
| 53 | 
            +
                    puts YAML.dump(stringify_keys(response.to_hash))
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                desc 'update [NAME]', 'update lambda function config [and code]'
         | 
| 58 | 
            +
                method_option :zip_file, aliases: '-z', default: false, desc: 'Update code zip file (creates if necessary)'
         | 
| 59 | 
            +
                def update(name = nil)
         | 
| 60 | 
            +
                  opt = load_cfg
         | 
| 61 | 
            +
                  opt[:function_name] = name unless name.nil?
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  ## update configuration
         | 
| 64 | 
            +
                  whitelist = %i[function_name role handler description timeout memory_size]
         | 
| 65 | 
            +
                  response = lambda.update_function_configuration(only_keys_matching(opt, whitelist)).to_hash
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  ## update code
         | 
| 68 | 
            +
                  opt[:code] = {zip_file: zip_thing(options[:zip_file])} if options[:zip_file]
         | 
| 69 | 
            +
                  unless opt.fetch(:code, {}).empty?
         | 
| 70 | 
            +
                    r = lambda.update_function_code(opt[:code].merge({function_name: opt[:function_name]}))
         | 
| 71 | 
            +
                    response = response.merge(r.to_hash)
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                  ## return combined response
         | 
| 75 | 
            +
                  response.tap do |resp|
         | 
| 76 | 
            +
                    puts YAML.dump(stringify_keys(resp))
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                desc 'dump NAME', 'get configuration of lambda function NAME'
         | 
| 81 | 
            +
                def dump(name)
         | 
| 82 | 
            +
                  lambda.get_function_configuration(function_name: name).tap do |h|
         | 
| 83 | 
            +
                    puts YAML.dump(stringify_keys(h.to_hash))
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                desc 'code NAME', 'get code for lambda function NAME'
         | 
| 88 | 
            +
                method_option :url, aliases: '-u', default: false, desc: 'Return just URL instead of downloading code'
         | 
| 89 | 
            +
                def code(name)
         | 
| 90 | 
            +
                  url = lambda.get_function(function_name: name).code.location
         | 
| 91 | 
            +
                  if options[:url]
         | 
| 92 | 
            +
                    url
         | 
| 93 | 
            +
                  else
         | 
| 94 | 
            +
                    zipdata = open(url).read
         | 
| 95 | 
            +
                    file = Tempfile.open(['awful', '.zip'])
         | 
| 96 | 
            +
                    file.write(zipdata)
         | 
| 97 | 
            +
                    file.close
         | 
| 98 | 
            +
                    %x[unzip -p #{file.path}] # unzip all contents to stdout
         | 
| 99 | 
            +
                  end.tap do |output|
         | 
| 100 | 
            +
                    puts output
         | 
| 101 | 
            +
                  end
         | 
| 102 | 
            +
                end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                desc 'delete NAME', 'delete lambda function NAME'
         | 
| 105 | 
            +
                def delete(name)
         | 
| 106 | 
            +
                  if yes? "Really delete lambda function #{name}?", :yellow
         | 
| 107 | 
            +
                    lambda.delete_function(function_name: name).tap do
         | 
| 108 | 
            +
                      puts "deleted #{name}"
         | 
| 109 | 
            +
                    end
         | 
| 110 | 
            +
                  end
         | 
| 111 | 
            +
                end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                desc 'events NAME', 'list event source mappings for lambda function NAME'
         | 
| 114 | 
            +
                method_option :long,   aliases: '-l', default: false, desc: 'Long listing'
         | 
| 115 | 
            +
                method_option :create, aliases: '-c', default: nil,   desc: 'Create event source mapping with given ARN'
         | 
| 116 | 
            +
                def events(name)
         | 
| 117 | 
            +
                  if options[:create]
         | 
| 118 | 
            +
                    lambda.create_event_source_mapping(function_name: name, event_source_arn: options[:create], starting_position: 'LATEST').tap do |response|
         | 
| 119 | 
            +
                      puts YAML.dump(stringify_keys(response.to_hash))
         | 
| 120 | 
            +
                    end
         | 
| 121 | 
            +
                  else # list
         | 
| 122 | 
            +
                    lambda.list_event_source_mappings(function_name: name).event_source_mappings.tap do |sources|
         | 
| 123 | 
            +
                      if options[:long]
         | 
| 124 | 
            +
                        print_table sources.map { |s| [s.event_source_arn, s.state, "Batch size: #{s.batch_size}, Last result: #{s.last_processing_result}", s.last_modified] }
         | 
| 125 | 
            +
                      else
         | 
| 126 | 
            +
                        puts sources.map(&:event_source_arn)
         | 
| 127 | 
            +
                      end
         | 
| 128 | 
            +
                    end
         | 
| 129 | 
            +
                  end
         | 
| 130 | 
            +
                end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
              end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
            end
         | 
    
        data/lib/awful/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: awful
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.41
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ric Lister
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-10-02 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -92,6 +92,7 @@ executables: | |
| 92 92 | 
             
            - dynstr
         | 
| 93 93 | 
             
            - ec2
         | 
| 94 94 | 
             
            - elb
         | 
| 95 | 
            +
            - lambda
         | 
| 95 96 | 
             
            - lc
         | 
| 96 97 | 
             
            - r53
         | 
| 97 98 | 
             
            - rds
         | 
| @@ -118,6 +119,7 @@ files: | |
| 118 119 | 
             
            - bin/dynstr
         | 
| 119 120 | 
             
            - bin/ec2
         | 
| 120 121 | 
             
            - bin/elb
         | 
| 122 | 
            +
            - bin/lambda
         | 
| 121 123 | 
             
            - bin/lc
         | 
| 122 124 | 
             
            - bin/r53
         | 
| 123 125 | 
             
            - bin/rds
         | 
| @@ -136,6 +138,7 @@ files: | |
| 136 138 | 
             
            - lib/awful/dynamodb_streams.rb
         | 
| 137 139 | 
             
            - lib/awful/ec2.rb
         | 
| 138 140 | 
             
            - lib/awful/elb.rb
         | 
| 141 | 
            +
            - lib/awful/lambda.rb
         | 
| 139 142 | 
             
            - lib/awful/launch_config.rb
         | 
| 140 143 | 
             
            - lib/awful/rds.rb
         | 
| 141 144 | 
             
            - lib/awful/route53.rb
         | 
| @@ -166,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 166 169 | 
             
                  version: '0'
         | 
| 167 170 | 
             
            requirements: []
         | 
| 168 171 | 
             
            rubyforge_project: 
         | 
| 169 | 
            -
            rubygems_version: 2.2. | 
| 172 | 
            +
            rubygems_version: 2.2.5
         | 
| 170 173 | 
             
            signing_key: 
         | 
| 171 174 | 
             
            specification_version: 4
         | 
| 172 175 | 
             
            summary: Simple AWS command-line tool.
         |