fog_tracker 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -87,7 +87,8 @@ How is it [done]? (Usage)
87
87
  * The resources returned from a query are all Fog::Model objects, but they are "decorated" with some extra methods for fetching the account information, or for fetching more resources. This simplifies the code that consumes the query results, because it does not have to know anything about the tracker. Here are the methods added by {FogTracker::Extensions::FogModel}:
88
88
  1. `tracker_account` returns a Hash of the Resource's account information _(:name is added; :credentials are removed)_.
89
89
  2. `tracker_query(query_string)` queries the tracker for more resources.
90
- 3. `account_resources(collection_query)` returns an Array of resources from the same account. (This is essentially shorthand for `tracker.query("account::service::provider::#{collection_query}")`)
90
+ 3. `account_resources(collection_query)` also returns an Array of resources, but only from the same account. (This is essentially shorthand for `tracker_query("account::service::provider::#{collection_query}")`)
91
+ 4. `tracker_description` returns a descriptive string that is short, but unique to this resource.
91
92
 
92
93
  * Any Exceptions that occur in the Tracker's polling threads are rescued and logged. If you want to take further action, you can initialize the Tracker with an `:error_callback` Proc. This is similar to the Account update `:callback` above, except that the parameter for `:error_callback` should be an Exception instead of an Array of Resources.
93
94
 
@@ -52,6 +52,12 @@ module FogTracker
52
52
  results
53
53
  end
54
54
 
55
+ # Returns a short description of this resource
56
+ # @return [String] a short description of this resource
57
+ def tracker_description
58
+ type = (self.class.name.match(/::([^:]+)$/))[1]
59
+ "#{type} #{self.identity} in account #{tracker_account[:name]}"
60
+ end
55
61
  end
56
62
  end
57
63
  end
@@ -102,9 +102,17 @@ module FogTracker
102
102
  @trackers = Hash.new
103
103
  @accounts.each do |name, account|
104
104
  @log.debug "Setting up tracker for account #{name}"
105
- @trackers[name] = AccountTracker.new(name, account,
106
- {:delay => @delay, :callback => @callback,
107
- :error_callback => @error_proc, :logger => @log})
105
+ @trackers[name] = AccountTracker.new(name, account, {
106
+ :delay => @delay, :error_callback => @error_proc, :logger => @log,
107
+ :callback => Proc.new do |resources|
108
+ # attach a QueryProcessor to all returned resources
109
+ qp = FogTracker::Query::QueryProcessor.new(@trackers, :logger => @log)
110
+ resources.each {|resource| resource._query_processor = qp}
111
+ # now relay the resources back to the client software
112
+ @callback.call(resources) if @callback
113
+ end
114
+ }
115
+ )
108
116
  end
109
117
  end
110
118
 
@@ -1,3 +1,3 @@
1
1
  module FogTracker
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -57,6 +57,14 @@ module FogTracker
57
57
  end
58
58
  end
59
59
 
60
+ describe "tracker_description" do
61
+ it "returns a short description of the resource" do
62
+ @model.tracker_description.should == "Server in account "
63
+ @model.stub(:identity).and_return "fake ID"
64
+ @model.tracker_description.should == "Server fake ID in account "
65
+ end
66
+ end
67
+
60
68
  describe '#account_resources' do
61
69
  context "with no query processor assigned" do
62
70
  it "returns an empty Array" do
@@ -33,6 +33,14 @@ module FogTracker
33
33
  @tracker.logger.should == LOG
34
34
  end
35
35
 
36
+ it "attaches a query processor to resources returned by the callback" do
37
+ t = Tracker.new(ACCOUNTS, :logger => LOG,
38
+ :callback => Proc.new do |resources|
39
+ resources.each { |r| r._query_processor.should_not == nil }
40
+ end
41
+ ).update
42
+ end
43
+
36
44
  describe '#types_for_account' do
37
45
  it "returns an array of collection names for the given account" do
38
46
  [ "addresses", "flavors", "images", "key_pairs", "security_groups",
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.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-01 00:00:00.000000000Z
12
+ date: 2012-02-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
16
- requirement: &70231856253280 !ruby/object:Gem::Requirement
16
+ requirement: &70301255176120 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70231856253280
24
+ version_requirements: *70301255176120
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70231856252300 !ruby/object:Gem::Requirement
27
+ requirement: &70301255175000 !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: *70231856252300
35
+ version_requirements: *70301255175000
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70231856251120 !ruby/object:Gem::Requirement
38
+ requirement: &70301255173960 !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: *70231856251120
46
+ version_requirements: *70301255173960
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &70231856250360 !ruby/object:Gem::Requirement
49
+ requirement: &70301255173260 !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: *70231856250360
57
+ version_requirements: *70301255173260
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard
60
- requirement: &70231856249440 !ruby/object:Gem::Requirement
60
+ requirement: &70301255172280 !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: *70231856249440
68
+ version_requirements: *70301255172280
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-rspec
71
- requirement: &70231856248880 !ruby/object:Gem::Requirement
71
+ requirement: &70301255171500 !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: *70231856248880
79
+ version_requirements: *70301255171500
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: ruby_gntp
82
- requirement: &70231856248060 !ruby/object:Gem::Requirement
82
+ requirement: &70301255163720 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70231856248060
90
+ version_requirements: *70301255163720
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:
@@ -138,7 +138,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
138
  version: '0'
139
139
  segments:
140
140
  - 0
141
- hash: -4330503374287036490
141
+ hash: -498220163521293823
142
142
  required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  none: false
144
144
  requirements:
@@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
147
  version: '0'
148
148
  segments:
149
149
  - 0
150
- hash: -4330503374287036490
150
+ hash: -498220163521293823
151
151
  requirements: []
152
152
  rubyforge_project: fog_tracker
153
153
  rubygems_version: 1.8.10