fog_tracker 0.3.4 → 0.3.7

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.
data/fog_tracker.gemspec CHANGED
@@ -22,7 +22,8 @@ Gem::Specification.new do |s|
22
22
  s.require_paths = ["lib"]
23
23
 
24
24
  # Runtime dependencies
25
- s.add_dependency "fog"
25
+ # Fog v1.2.0 has a bug in Compute[:aws].servers
26
+ s.add_dependency "fog", '=1.1.2'
26
27
 
27
28
  # Development / Test dependencies
28
29
  s.add_development_dependency "rake"
data/lib/fog_tracker.rb CHANGED
@@ -21,6 +21,14 @@ module FogTracker
21
21
  logger
22
22
  end
23
23
 
24
+ # Loads account information defined in account_file.
25
+ # @param account_file the path to a YAML file (see accounts.example.yml).
26
+ # @return [Hash] the cleaned, validated Hash of account info.
27
+ def self.read_accounts(account_file = ENV['ACCOUNT_FILE'])
28
+ account_file ||= "./config/accounts.yml"
29
+ FogTracker.validate_accounts(YAML::load(File.read account_file))
30
+ end
31
+
24
32
  # Performs validation and cleanup on an Array of account Hashes.
25
33
  # Changes Strings to Symbols for all required keys.
26
34
  # @param [Hash] account_array an Array of Hash objects.
@@ -3,12 +3,12 @@ module FogTracker
3
3
  # Tracks one or more Fog accounts and exposes a {#query} on the results
4
4
  class Tracker
5
5
 
6
- #a Hash of account information (see accounts.yml.example)
6
+ #a Hash of account information (see accounts.example.yml)
7
7
  attr_reader :accounts
8
8
 
9
9
  # Creates an object for tracking multiple Fog accounts
10
10
  # @param [Hash] accounts a Hash of account information
11
- # (see accounts.yml.example)
11
+ # (see accounts.example.yml)
12
12
  # @param [Hash] options optional additional parameters:
13
13
  # - :delay (Integer) - Default time between polling of accounts
14
14
  # - :callback (Proc) - A Method or Proc to call each time an account is polled.
@@ -105,7 +105,7 @@ module FogTracker
105
105
  # Sets the account information.
106
106
  # If any account info has changed, all trackers are restarted.
107
107
  # @param [Hash] accounts a Hash of account information
108
- # (see accounts.yml.example)
108
+ # (see accounts.example.yml)
109
109
  def accounts=(new_accounts)
110
110
  old_accounts = @accounts
111
111
  @accounts = FogTracker.validate_accounts(new_accounts)
@@ -1,3 +1,3 @@
1
1
  module FogTracker
2
- VERSION = "0.3.4"
2
+ VERSION = "0.3.7"
3
3
  end
@@ -0,0 +1,15 @@
1
+ desc "Runs the tracker [LOG_LEVEL=[INFO]]"
2
+ task :track do
3
+ require File.join(File.dirname(__FILE__), '..', 'fog_tracker')
4
+
5
+ # Setup logging
6
+ log = FogTracker.default_logger(STDOUT)
7
+ log.level = ::Logger.const_get((ENV['LOG_LEVEL'] || 'INFO').to_sym)
8
+
9
+ log.info "Loading account information..."
10
+ accounts = FogTracker.read_accounts './config/accounts.yml'
11
+
12
+ FogTracker::Tracker.new(accounts, {:logger => log}).start
13
+ while true do ; sleep 60 end # Loop forever
14
+
15
+ end
@@ -1,25 +1,33 @@
1
1
  module FogTracker
2
-
2
+
3
+ describe '#read_accounts' do
4
+ it "converts a YAML file into a Hash of account info" do
5
+ accounts = FogTracker.read_accounts('./config/accounts.example.yml')
6
+ accounts.should be_a Hash
7
+ accounts.should_not be_empty
8
+ end
9
+ end
10
+
3
11
  describe '#validate_accounts' do
4
- it "should raise an exception when no service is specified" do
12
+ it "raises an exception when no service is specified" do
5
13
  (Proc.new { FogTracker.validate_accounts(
6
14
  FAKE_ACCOUNT_NAME => FAKE_ACCOUNT.merge({:service => nil})
7
15
  )}).should raise_error
8
16
  end
9
-
10
- it "should raise an exception when no provider is specified" do
17
+
18
+ it "raises an exception when no provider is specified" do
11
19
  (Proc.new { FogTracker.validate_accounts(
12
20
  FAKE_ACCOUNT_NAME => FAKE_ACCOUNT.merge({:provider => nil})
13
21
  )}).should raise_error
14
22
  end
15
-
16
- it "should raise an exception when no credentials are specified" do
23
+
24
+ it "raises an exception when no credentials are specified" do
17
25
  (Proc.new { FogTracker.validate_accounts(
18
26
  FAKE_ACCOUNT_NAME => FAKE_ACCOUNT.merge({:credentials => nil})
19
27
  )}).should raise_error
20
28
  end
21
29
 
22
- it "should symbolize all account keys" do
30
+ it "symbolizes all account keys" do
23
31
  validated_accounts = FogTracker.validate_accounts(
24
32
  FAKE_ACCOUNT_NAME => {
25
33
  'provider' => 'AWS',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog_tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-19 00:00:00.000000000 Z
12
+ date: 2012-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
16
- requirement: &70164626570920 !ruby/object:Gem::Requirement
16
+ requirement: &70290730545600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - =
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 1.1.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70164626570920
24
+ version_requirements: *70290730545600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70164626569880 !ruby/object:Gem::Requirement
27
+ requirement: &70290730539940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70164626569880
35
+ version_requirements: *70290730539940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70164626569020 !ruby/object:Gem::Requirement
38
+ requirement: &70290730530160 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70164626569020
46
+ version_requirements: *70290730530160
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &70164626568500 !ruby/object:Gem::Requirement
49
+ requirement: &70290730526680 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70164626568500
57
+ version_requirements: *70290730526680
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard
60
- requirement: &70164626567940 !ruby/object:Gem::Requirement
60
+ requirement: &70290730524120 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70164626567940
68
+ version_requirements: *70290730524120
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-rspec
71
- requirement: &70164626567220 !ruby/object:Gem::Requirement
71
+ requirement: &70290730521300 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70164626567220
79
+ version_requirements: *70290730521300
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: ruby_gntp
82
- requirement: &70164626564620 !ruby/object:Gem::Requirement
82
+ requirement: &70290730310040 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,13 +87,12 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70164626564620
90
+ version_requirements: *70290730310040
91
91
  description: This gem peridically polls mutiple cloud computing services using the
92
92
  fog gem, asynchronously updating the state of the resulting collections of Fog Resources.
93
93
  email:
94
94
  - benton@bentonroberts.com
95
- executables:
96
- - fog_tracker
95
+ executables: []
97
96
  extensions: []
98
97
  extra_rdoc_files: []
99
98
  files:
@@ -104,8 +103,7 @@ files:
104
103
  - LICENSE.TXT
105
104
  - README.md
106
105
  - Rakefile
107
- - bin/fog_tracker
108
- - config/accounts.yml.example
106
+ - config/accounts.example.yml
109
107
  - fog_tracker.gemspec
110
108
  - lib/fog_tracker.rb
111
109
  - lib/fog_tracker/account_tracker.rb
@@ -117,6 +115,7 @@ files:
117
115
  - lib/fog_tracker/util/string_underscore.rb
118
116
  - lib/fog_tracker/version.rb
119
117
  - lib/tasks/rspec.rake
118
+ - lib/tasks/track.rake
120
119
  - spec/lib/fog_tracker/account_tracker_spec.rb
121
120
  - spec/lib/fog_tracker/collection_tracker_spec.rb
122
121
  - spec/lib/fog_tracker/extensions/fog_model_spec.rb
@@ -141,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
140
  version: '0'
142
141
  segments:
143
142
  - 0
144
- hash: 358139871120298562
143
+ hash: -1170305047196625380
145
144
  required_rubygems_version: !ruby/object:Gem::Requirement
146
145
  none: false
147
146
  requirements:
@@ -150,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
149
  version: '0'
151
150
  segments:
152
151
  - 0
153
- hash: 358139871120298562
152
+ hash: -1170305047196625380
154
153
  requirements: []
155
154
  rubyforge_project: fog_tracker
156
155
  rubygems_version: 1.8.15
data/bin/fog_tracker DELETED
@@ -1,73 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # == Synopsis
4
- # Uses the Fog gem to track the status of cloud computing resources
5
- #
6
- # == Usage
7
- # fog_tracker.rb [options] ACCOUNTS_CONFIG_FILE.YML
8
- #
9
- # == Options (all options can be put into the config file)
10
- # -d, --delay [INTEGER] Seconds between status updates.
11
- # -l, --log-level [LEVEL] Sets Log4r level for console output. default = INFO
12
- # -h, --help Displays help message
13
- #
14
- # == Author
15
- # Benton Roberts
16
-
17
- require 'optparse'
18
- require 'fog_tracker'
19
- LOG_LVLS = {
20
- "DEBUG" => ::Logger::DEBUG,
21
- "INFO" => ::Logger::INFO,
22
- "WARN" => ::Logger::WARN,
23
- "ERROR" => ::Logger::ERROR,
24
- "FATAL" => ::Logger::FATAL
25
- }
26
-
27
- module FogTracker
28
- class FogTrackerConsoleApp
29
-
30
- def initialize
31
- @log = FogTracker.default_logger(STDOUT)
32
- parse_options
33
- @log.info "Loading account information from #{ARGV[0]}"
34
- @accounts = YAML::load(File.open(ARGV[0]))
35
- @tracker = FogTracker::Tracker.new(
36
- @accounts, {:logger => @log, :delay => @opts[:delay]}
37
- )
38
- end
39
-
40
- def go
41
- @tracker.start
42
- while true do
43
- sleep 60 # Loop forever
44
- end
45
- end
46
-
47
- def parse_options
48
- @opts = {:log_level => 'INFO'}
49
- optparse = OptionParser.new do |opts|
50
- opts.banner = "Usage: tracker [options] ACCOUNTS.YML"
51
- opts.on('-d', '--delay SECONDS', Integer,
52
- 'Number of seconds between status updates') do |delay|
53
- @opts[:delay] = delay
54
- end
55
- opts.on('-l', '--log-level LEVEL', 'Set logging level') do |log_level|
56
- @opts[:log_level] = log_level.upcase
57
- end
58
- opts.on('-h', '--help', 'Display this help message') do
59
- puts opts ; exit
60
- end
61
- end
62
- optparse.parse!
63
- @log.level = LOG_LVLS[@opts[:log_level]] if LOG_LVLS[@opts[:log_level]]
64
- if ARGV.count < 1
65
- @log.error "A YAML file with account info must be specified"
66
- exit 1
67
- end
68
- end
69
-
70
- end
71
- end
72
-
73
- FogTracker::FogTrackerConsoleApp.new.go