fog-pry 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8de54af0e4946ab6666f5a55724d39a146073fb0
4
+ data.tar.gz: 53a60cbee75c85f53a79662da1432159bfbc6c61
5
+ SHA512:
6
+ metadata.gz: 542241670463bff36858894cbffaf90057e468280a469fccf5fdfcde941891920d83a6f28aa693578d3f43278efd1cdc59ce9c5371799faa2273c883a47cddca
7
+ data.tar.gz: effe74c0a8ee6ba02b09133092bf8b8508e83fdfe3e468f2a2ee8cafc03632d310d45c0f639506da4bd134683d34317f2e1ce2ddabacb0fd9f15e8192359723c
@@ -0,0 +1,19 @@
1
+ .idea
2
+ vendor
3
+ *.gem
4
+ *.rbc
5
+ .bundle
6
+ .config
7
+ .yardoc
8
+ Gemfile.lock
9
+ InstalledFiles
10
+ _yardoc
11
+ coverage
12
+ doc/
13
+ lib/bundler/man
14
+ pkg
15
+ rdoc
16
+ spec/reports
17
+ test/tmp
18
+ test/version_tmp
19
+ tmp
data/.pryrc ADDED
@@ -0,0 +1,3 @@
1
+ $: << File.join(File.dirname(__FILE__), 'lib')
2
+ require 'fog-pry'
3
+ include Fog::FogProvider
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fog-pry.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 mshea
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Fog::Pry
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'fog-pry'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install fog-pry
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fog-pry/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'fog-pry'
8
+ spec.version = Fog::Pry::VERSION
9
+ spec.authors = 'Michael Shea'
10
+ spec.email = %w'mike.shea@gmail.com'
11
+ spec.description = %q{Making it (even) easier to use fog via simple config files and some extra methods}
12
+ spec.summary = %q{Making it (even) easier to use fog via simple config files and some extra methods}
13
+ spec.homepage = 'http://github.com/sheax0r/fog-pry'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = %w'lib'
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.3'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'pry'
24
+
25
+ spec.add_dependency 'fog'
26
+ spec.add_dependency 'recursive-open-struct'
27
+ end
@@ -0,0 +1,28 @@
1
+ require 'fog-pry/version'
2
+ require 'fog-pry/fog_client'
3
+ require 'recursive-open-struct'
4
+
5
+ module Fog
6
+ module FogProvider
7
+ def fog(type)
8
+ FogClient.new(type, config.send(type))
9
+ end
10
+
11
+ def config
12
+ @config ||= load_config
13
+ end
14
+
15
+ def reload_config
16
+ @config = nil
17
+ config
18
+ end
19
+
20
+ def config_file
21
+ ENV['FOG_CONFIG_FILE'] || "#{ENV['HOME']}/.fogpryrc"
22
+ end
23
+
24
+ def load_config
25
+ RecursiveOpenStruct.new(YAML.load(File.read(config_file)), :recurse_over_arrays=>true)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,104 @@
1
+ require 'fog'
2
+
3
+ class FogClient
4
+ attr_reader :type, :config, :secret_access_key, :access_key_id
5
+
6
+ def initialize(type, config)
7
+ @type, @config = type, config
8
+
9
+ creds = config.credentials
10
+ @secret_access_key, @access_key_id = creds.secret_access_key, creds.access_key_id
11
+ end
12
+
13
+ def credentials(op)
14
+ if op == :elb || op == :iam
15
+ return {
16
+ :aws_secret_access_key=>secret_access_key,
17
+ :aws_access_key_id=>access_key_id,
18
+ :connection_options => {
19
+ :ssl_verify_peer => false
20
+ }
21
+ }.merge(uri_params(op_endpoint(op)))
22
+ end
23
+
24
+ endpoint = op_endpoint(op)
25
+
26
+ {
27
+ :provider=>'AWS',
28
+ :aws_secret_access_key=>secret_access_key,
29
+ :aws_access_key_id=>access_key_id,
30
+ :connection_options=>{:ssl_verify_peer=>false}.merge(uri_params(endpoint))
31
+ }.merge(endpoint_params(endpoint))
32
+ end
33
+
34
+ def op_endpoint(op)
35
+ config.respond_to?(op) ? config.send(op) : nil
36
+ end
37
+
38
+ def endpoint_params(url)
39
+ if url
40
+ {:endpoint=>url}
41
+ else
42
+ {}
43
+ end
44
+ end
45
+
46
+ def uri_params(url)
47
+ if url
48
+ uri = URI.parse url
49
+ {:scheme => uri.scheme,
50
+ :host => uri.host,
51
+ :port => uri.port,
52
+ :path => uri.path,
53
+ }
54
+ else
55
+ {}
56
+ end
57
+ end
58
+
59
+ def dns
60
+ Fog::DNS.new(credentials(:dns))
61
+ end
62
+
63
+ def compute
64
+ Fog::Compute.new(credentials(:compute))
65
+ end
66
+
67
+ def iam
68
+ Fog::AWS::IAM.new(credentials(:iam))
69
+ end
70
+
71
+ def elb
72
+ Fog::AWS::ELB.new(credentials(:elb))
73
+ end
74
+ end
75
+
76
+ class Fog::Compute::AWS::Servers < Fog::Collection
77
+ def running(&block)
78
+ if block_given?
79
+ all.select{|s| s.ready? && (yield s)}
80
+ else
81
+ all.select{|s|s.ready?}
82
+ end
83
+ end
84
+
85
+ # Get servers matching given regex
86
+ def by_tag(tag, input)
87
+ if input.is_a? String
88
+ running {|s| s.tags[tag] == input}
89
+ elsif input.is_a? Regexp
90
+ running {|s| s.tags[tag] =~ input}
91
+ else
92
+ raise "Unknown input object type: #{input.class}"
93
+ end
94
+ end
95
+
96
+ def method_missing(name, *args, &block)
97
+ if name.match(/^by_/) && args.size == 1
98
+ by_tag(name[3..-1], args[0])
99
+ else
100
+ super(name, *args, &block)
101
+ end
102
+ end
103
+ end
104
+
@@ -0,0 +1,5 @@
1
+ module Fog
2
+ module Pry
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fog-pry
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Michael Shea
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: fog
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: recursive-open-struct
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Making it (even) easier to use fog via simple config files and some extra
84
+ methods
85
+ email:
86
+ - mike.shea@gmail.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - .gitignore
92
+ - .pryrc
93
+ - Gemfile
94
+ - LICENSE.txt
95
+ - README.md
96
+ - Rakefile
97
+ - fog-pry.gemspec
98
+ - lib/fog-pry.rb
99
+ - lib/fog-pry/fog_client.rb
100
+ - lib/fog-pry/version.rb
101
+ homepage: http://github.com/sheax0r/fog-pry
102
+ licenses:
103
+ - MIT
104
+ metadata: {}
105
+ post_install_message:
106
+ rdoc_options: []
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ requirements: []
120
+ rubyforge_project:
121
+ rubygems_version: 2.0.3
122
+ signing_key:
123
+ specification_version: 4
124
+ summary: Making it (even) easier to use fog via simple config files and some extra
125
+ methods
126
+ test_files: []