puppet-herald 0.1.0

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.
Files changed (50) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +5 -0
  5. data/README.md +73 -0
  6. data/Rakefile +6 -0
  7. data/bin/puppet-herald +13 -0
  8. data/config.ru +2 -0
  9. data/db/migrate/20141211165540_create_nodes.rb +10 -0
  10. data/db/migrate/20141211171305_create_reports.rb +16 -0
  11. data/db/migrate/20141211171326_create_log_entries.rb +13 -0
  12. data/db/schema.rb +47 -0
  13. data/db/seeds.rb +0 -0
  14. data/lib/puppet-herald.rb +37 -0
  15. data/lib/puppet-herald/app.rb +112 -0
  16. data/lib/puppet-herald/cli.rb +53 -0
  17. data/lib/puppet-herald/database.rb +50 -0
  18. data/lib/puppet-herald/javascript.rb +34 -0
  19. data/lib/puppet-herald/models/log-entry.rb +3 -0
  20. data/lib/puppet-herald/models/node.rb +7 -0
  21. data/lib/puppet-herald/models/report.rb +78 -0
  22. data/lib/puppet-herald/public/.bowerrc +3 -0
  23. data/lib/puppet-herald/public/app.js +27 -0
  24. data/lib/puppet-herald/public/bower.json +15 -0
  25. data/lib/puppet-herald/public/components/artifact/artifact-directive.js +12 -0
  26. data/lib/puppet-herald/public/components/artifact/artifact-directive_test.js +17 -0
  27. data/lib/puppet-herald/public/components/artifact/artifact.js +31 -0
  28. data/lib/puppet-herald/public/components/directives/directives.js +5 -0
  29. data/lib/puppet-herald/public/components/directives/status-button.html +7 -0
  30. data/lib/puppet-herald/public/components/directives/status-button.js +54 -0
  31. data/lib/puppet-herald/public/components/filters/filters.js +12 -0
  32. data/lib/puppet-herald/public/css/herald.css +38 -0
  33. data/lib/puppet-herald/public/img/shield97.svg +17 -0
  34. data/lib/puppet-herald/public/node/node.html +30 -0
  35. data/lib/puppet-herald/public/node/node.js +24 -0
  36. data/lib/puppet-herald/public/nodes/nodes.html +29 -0
  37. data/lib/puppet-herald/public/nodes/nodes.js +24 -0
  38. data/lib/puppet-herald/public/report/report.html +24 -0
  39. data/lib/puppet-herald/public/report/report.js +24 -0
  40. data/lib/puppet-herald/stubs/puppet.rb +29 -0
  41. data/lib/puppet-herald/version.rb +20 -0
  42. data/lib/puppet-herald/views/app.erb +42 -0
  43. data/lib/puppet-herald/views/err500.erb +31 -0
  44. data/puppet-herald.gemspec +62 -0
  45. data/spec/model_helper.rb +2 -0
  46. data/spec/spec_helper.rb +37 -0
  47. data/spec/support/active_record.rb +17 -0
  48. data/spec/unit/fixtures/changed-notify.yaml +278 -0
  49. data/spec/unit/models/report_spec.rb +38 -0
  50. metadata +331 -0
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ angular.module('herald.node', [
4
+ 'ngRoute',
5
+ 'herald.directives'
6
+ ])
7
+
8
+ .config(['$routeProvider', function($routeProvider) {
9
+ $routeProvider.when('/node/:nodeId', {
10
+ templateUrl: 'node/node.html',
11
+ controller: 'NodeController'
12
+ });
13
+ }])
14
+
15
+ .controller('NodeController', ['$http', '$routeParams', function($http, $routeParams) {
16
+ var ctrl = this;
17
+ ctrl.node = null;
18
+
19
+ this.nodeId = $routeParams.nodeId;
20
+
21
+ $http.get('/api/v1/node/' + this.nodeId).success(function(data) {
22
+ ctrl.node = data;
23
+ });
24
+ }]);
@@ -0,0 +1,29 @@
1
+ <div class="panel panel-primary" ng-controller="NodesController as nodes">
2
+ <!-- Default panel contents -->
3
+ <div class="panel-heading">Nodes <span class="badge">{{ nodes.all.length }}</span></div>
4
+
5
+ <!-- Table -->
6
+ <table class="table table-striped table-hover">
7
+ <thead>
8
+ <tr>
9
+ <th>#</th>
10
+ <th>Node</th>
11
+ <th>Status</th>
12
+ <th># of reports</th>
13
+ <th>Last run</th>
14
+ </tr>
15
+ </thead>
16
+ <tbody>
17
+ <tr ng-repeat="node in nodes.all | orderBy:'last_run'">
18
+ <td>{{ $index + 1 }}</td>
19
+ <td>{{ node.name }}</td>
20
+ <td><ng-status-button
21
+ status="node.status"
22
+ id="node.id"
23
+ route="'/node/:id'"></ng-status-button></td>
24
+ <td>{{ node.no_of_reports }}</td>
25
+ <td am-time-ago="node.last_run"></td>
26
+ </tr>
27
+ </tbody>
28
+ </table>
29
+ </div>
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ angular.module('herald.nodes', [
4
+ 'ngRoute',
5
+ 'herald.directives',
6
+ 'angularMoment'
7
+ ])
8
+
9
+ .config(['$routeProvider', function($routeProvider) {
10
+ $routeProvider.when('/nodes', {
11
+ templateUrl: 'nodes/nodes.html',
12
+ controller: 'NodesController'
13
+ });
14
+ }])
15
+
16
+ .controller('NodesController', ['$http', 'appService', function($http, appService) {
17
+ appService.page = 'nodes';
18
+ var ctrl = this;
19
+ ctrl.all = [];
20
+
21
+ $http.get('/api/v1/nodes').success(function(data) {
22
+ ctrl.all = data;
23
+ });
24
+ }]);
@@ -0,0 +1,24 @@
1
+ <div class="panel panel-primary" ng-controller="ReportController as ctrl">
2
+ <!-- Default panel contents -->
3
+ <div class="panel-heading">Report for {{ ctrl.report.host }} <span class="badge">{{ ctrl.report.log_entries.length }}</span></div>
4
+
5
+ <!-- Table -->
6
+ <table class="table table-condensed table-hover herald-table-report">
7
+ <thead>
8
+ <tr>
9
+ <th>#</th>
10
+ <th>Line</th>
11
+ </tr>
12
+ </thead>
13
+ <tbody>
14
+ <tr>
15
+ <td></td>
16
+ <td># puppet {{ ctrl.report.kind }} [...]</td>
17
+ </tr>
18
+ <tr ng-repeat="entry in ctrl.report.log_entries | orderBy:'time'">
19
+ <td>{{ $index + 1 }}</td>
20
+ <td class="herald-log-{{ entry.level }}">{{ entry.level | capitalize }}: {{ entry.source }}: {{ entry.message }}</td>
21
+ </tr>
22
+ </tbody>
23
+ </table>
24
+ </div>
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ angular.module('herald.report', [
4
+ 'ngRoute',
5
+ 'herald.directives'
6
+ ])
7
+
8
+ .config(['$routeProvider', function($routeProvider) {
9
+ $routeProvider.when('/report/:reportId', {
10
+ templateUrl: 'report/report.html',
11
+ controller: 'ReportController'
12
+ });
13
+ }])
14
+
15
+ .controller('ReportController', ['$http', '$routeParams', function($http, $routeParams) {
16
+ var ctrl = this;
17
+ ctrl.report = null;
18
+
19
+ this.reportId = $routeParams.reportId;
20
+
21
+ $http.get('/api/v1/report/' + this.reportId).success(function(data) {
22
+ ctrl.report = data;
23
+ });
24
+ }]);
@@ -0,0 +1,29 @@
1
+ module Puppet
2
+ module Transaction
3
+
4
+ class Report
5
+ attr_accessor :host, :time, :kind, :puppet_version, :configuration_version, :transaction_uuid, :environment, :status, :logs
6
+ end
7
+
8
+ class Event
9
+
10
+ end
11
+
12
+ end
13
+ class Resource
14
+ class Status
15
+
16
+ end
17
+ end
18
+ module Util
19
+
20
+ class Log
21
+ attr_accessor :level, :message, :source, :time, :line, :tags
22
+ end
23
+
24
+ class Metric
25
+
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,20 @@
1
+ module PuppetHerald
2
+
3
+ def self.version_prep desired
4
+ version = desired
5
+ if desired.match(/[^0-9\.]+/)
6
+ git = `git describe --tags --dirty --always`
7
+ version += "-" + git[1..-1]
8
+ end
9
+ return version.strip
10
+ end
11
+
12
+ VERSION = version_prep '0.1.0'
13
+ LICENSE = 'Apache 2.0'
14
+ NAME = 'Puppet Herald'
15
+ PACKAGE = 'puppet-herald'
16
+ SUMMARY = 'a Puppet report processor'
17
+ DESCRIPTION = "Provides a gateway for consuming puppet reports, a REST API and a simple Web app to display reports."
18
+ HOMEPAGE = 'https://github.com/wavesoftware/gem-puppet-herald'
19
+
20
+ end
@@ -0,0 +1,42 @@
1
+ <!DOCTYPE html>
2
+ <!--[if lt IE 7]> <html lang="en" ng-app="herald" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
3
+ <!--[if IE 7]> <html lang="en" ng-app="herald" class="no-js lt-ie9 lt-ie8"> <![endif]-->
4
+ <!--[if IE 8]> <html lang="en" ng-app="herald" class="no-js lt-ie9"> <![endif]-->
5
+ <!--[if gt IE 8]><!--> <html lang="en" ng-app="herald" class="no-js"> <!--<![endif]-->
6
+ <head ng-controller="AppController as app">
7
+ <meta charset="utf-8">
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
9
+ <title>Herald - a Puppet report processor</title>
10
+
11
+ <meta name="description" content="Herald - a Puppet report processor">
12
+ <meta name="viewport" content="width=device-width, initial-scale=1">
13
+ <!-- Latest compiled and minified CSS -->
14
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap<%= @minified %>.css">
15
+ <!-- Optional theme -->
16
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme<%= @minified %>.css">
17
+ <link rel="stylesheet" href="css/herald.css">
18
+ </head>
19
+ <body>
20
+
21
+ <section class="container-fluid">
22
+
23
+ <h2><img src="/img/shield97.svg" />Herald <small>a Puppet report processor</small></h2>
24
+
25
+ <div ng-view></div>
26
+
27
+ <address>
28
+ <hr />
29
+ <p class="text-muted"><small>Herald v<span app-version></span></small></p>
30
+ </address>
31
+ </section>
32
+
33
+ <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular<%= @minified %>.js"></script>
34
+ <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-route<%= @minified %>.js"></script>
35
+ <script src="//cdn.jsdelivr.net/momentjs/2.5.1/moment.min.js"></script>
36
+ <script src="//cdn.jsdelivr.net/angular.moment/0.6.2/angular-moment.js"></script>
37
+
38
+ <!-- Automatic incudes of project files -->
39
+ <% @files.each do |file| %>
40
+ <script src="<%= file %>"></script><% end %>
41
+ </body>
42
+ </html>
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE html>
2
+ <!--[if lt IE 7]> <html lang="en" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
3
+ <!--[if IE 7]> <html lang="en" class="no-js lt-ie9 lt-ie8"> <![endif]-->
4
+ <!--[if IE 8]> <html lang="en" class="no-js lt-ie9"> <![endif]-->
5
+ <!--[if gt IE 8]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
6
+ <head>
7
+ <meta charset="utf-8">
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
9
+ <title>Error 500 | Herald - a Puppet report processor</title>
10
+ <meta name="description" content="Herald - a Puppet report processor">
11
+ <meta name="viewport" content="width=device-width, initial-scale=1">
12
+ <!-- Latest compiled and minified CSS -->
13
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
14
+ <!-- Optional theme -->
15
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap-theme.min.css">
16
+ </head>
17
+ <body>
18
+
19
+ <section class="container-fluid">
20
+ <h2><img src="/img/shield97.svg" />Herald <small>a Puppet report processor</small></h2>
21
+
22
+ <div class="jumbotron">
23
+ <h2 class="text-danger glyphicon glyphicon-fire">Internal Server Error (500)</h2>
24
+ <p>Something realy unpredictable just happend...</p>
25
+ <div class="well well-lg"><samp><%= @bug[:message] %></samp></div>
26
+ <p><small><strong>Pro Tip!</strong> Please report this bug by passing contents of bug file: <code><%= @bug[:bugfile] %></code></small></p>
27
+ <p><a class="btn btn-danger btn-lg" href="<%= @bug[:homepage] %>" role="button">Report a bug</a></p>
28
+ </div>
29
+ </section>
30
+ </body>
31
+ </html>
@@ -0,0 +1,62 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../lib/puppet-herald/version', __FILE__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = PuppetHerald::PACKAGE
7
+ gem.version = PuppetHerald::VERSION
8
+ gem.author = 'Krzysztof Suszynski'
9
+ gem.email = 'krzysztof.suszynski@wavesoftware.pl'
10
+ gem.license = PuppetHerald::LICENSE
11
+ gem.homepage = PuppetHerald::HOMEPAGE
12
+ gem.summary = PuppetHerald::SUMMARY
13
+ gem.description = PuppetHerald::DESCRIPTION
14
+
15
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ gem.files = `git ls-files`.split("\n")
17
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ gem.require_paths = ["lib"]
19
+
20
+ # Dependencies
21
+ gem.required_ruby_version = '>= 1.9.2'
22
+
23
+ prydebugger = if RUBY_VERSION >= "2.0.0" then 'pry-byebug' else 'pry-debugger' end
24
+ dependencies = {
25
+ :runtime => [
26
+ 'rake',
27
+ 'sinatra',
28
+ 'sinatra-contrib',
29
+ 'sinatra-activerecord',
30
+ 'micro-optparse',
31
+ 'uglifier',
32
+ 'sqlite3',
33
+ 'pg',
34
+ 'puma'
35
+ ],
36
+ :test => [
37
+ 'rspec',
38
+ 'rspec-its',
39
+ 'coveralls',
40
+ 'simplecov'
41
+ ],
42
+ :developmant => [
43
+ 'inch',
44
+ 'travis',
45
+ 'travis-lint',
46
+ prydebugger
47
+ ]
48
+ }
49
+
50
+ dependencies[:runtime].each do |spec|
51
+ gem.add_runtime_dependency spec
52
+ end
53
+ dependencies[:test].each do |spec|
54
+ gem.add_development_dependency spec
55
+ end
56
+ dependencies[:developmant].each do |spec|
57
+ gem.add_development_dependency spec
58
+ end
59
+
60
+ end
61
+
62
+ # vim:ft=ruby
@@ -0,0 +1,2 @@
1
+ require 'support/active_record'
2
+ require 'spec_helper'
@@ -0,0 +1,37 @@
1
+ require 'rspec/its'
2
+
3
+ begin
4
+ gem 'simplecov'
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ add_filter "/spec/"
8
+ add_filter "/.vendor/"
9
+ add_filter "/vendor/"
10
+ add_filter "/gems/"
11
+ end
12
+ rescue Gem::LoadError
13
+ # do nothing
14
+ end
15
+
16
+ begin
17
+ gem 'coveralls'
18
+ require 'coveralls'
19
+ if ENV['TRAVIS']
20
+ Coveralls.wear!
21
+ end
22
+ rescue Gem::LoadError
23
+ # do nothing
24
+ end
25
+
26
+ begin
27
+ gem 'pry'
28
+ require 'pry'
29
+ rescue Gem::LoadError
30
+ # do nothing
31
+ end
32
+
33
+ RSpec.configure do |c|
34
+ c.expect_with :rspec do |mock|
35
+ mock.syntax = [:expect, :should]
36
+ end
37
+ end
@@ -0,0 +1,17 @@
1
+ require 'active_record'
2
+ require 'stringio' # silence the output
3
+ $stdout = StringIO.new # from migrator
4
+
5
+ ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
6
+ ActiveRecord::Migrator.up "db/migrate"
7
+
8
+ $stdout = STDOUT
9
+
10
+ RSpec.configure do |config|
11
+ config.around do |example|
12
+ ActiveRecord::Base.transaction do
13
+ example.run
14
+ raise ActiveRecord::Rollback
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,278 @@
1
+ --- !ruby/object:Puppet::Transaction::Report
2
+ metrics:
3
+ resources: !ruby/object:Puppet::Util::Metric
4
+ name: resources
5
+ label: Resources
6
+ values:
7
+ - - total
8
+ - Total
9
+ - 8
10
+ - - skipped
11
+ - Skipped
12
+ - 0
13
+ - - failed
14
+ - Failed
15
+ - 0
16
+ - - failed_to_restart
17
+ - "Failed to restart"
18
+ - 0
19
+ - - restarted
20
+ - Restarted
21
+ - 0
22
+ - - changed
23
+ - Changed
24
+ - 1
25
+ - - out_of_sync
26
+ - "Out of sync"
27
+ - 1
28
+ - - scheduled
29
+ - Scheduled
30
+ - 0
31
+ time: !ruby/object:Puppet::Util::Metric
32
+ name: time
33
+ label: Time
34
+ values:
35
+ - - schedule
36
+ - Schedule
37
+ - 0.00021728499999999998
38
+ - - notify
39
+ - Notify
40
+ - 0.000353069
41
+ - - filebucket
42
+ - Filebucket
43
+ - 3.8739e-05
44
+ - - config_retrieval
45
+ - "Config retrieval"
46
+ - 0.080785796
47
+ - - total
48
+ - Total
49
+ - 0.08139488900000001
50
+ changes: !ruby/object:Puppet::Util::Metric
51
+ name: changes
52
+ label: Changes
53
+ values:
54
+ - - total
55
+ - Total
56
+ - 1
57
+ events: !ruby/object:Puppet::Util::Metric
58
+ name: events
59
+ label: Events
60
+ values:
61
+ - - total
62
+ - Total
63
+ - 1
64
+ - - failure
65
+ - Failure
66
+ - 0
67
+ - - success
68
+ - Success
69
+ - 1
70
+ logs:
71
+ - !ruby/object:Puppet::Util::Log
72
+ level: !ruby/sym notice
73
+ tags:
74
+ - notice
75
+ message: shit
76
+ source: Puppet
77
+ time: 2014-12-11 18:53:34.907868 +01:00
78
+ - !ruby/object:Puppet::Util::Log
79
+ level: !ruby/sym notice
80
+ tags:
81
+ - notice
82
+ - notify
83
+ - shit
84
+ - class
85
+ message: "defined 'message' as 'shit'"
86
+ source: /Stage[main]/Main/Notify[shit]/message
87
+ time: 2014-12-11 18:53:34.907975 +01:00
88
+ line: 1
89
+ - !ruby/object:Puppet::Util::Log
90
+ level: !ruby/sym notice
91
+ tags:
92
+ - notice
93
+ message: "Finished catalog run in 0.06 seconds"
94
+ source: Puppet
95
+ time: 2014-12-11 18:53:34.963966 +01:00
96
+ resource_statuses:
97
+ Schedule[daily]: !ruby/object:Puppet::Resource::Status
98
+ resource: Schedule[daily]
99
+ file:
100
+ line:
101
+ evaluation_time: 6.3008e-05
102
+ change_count: 0
103
+ out_of_sync_count: 0
104
+ tags:
105
+ - schedule
106
+ - daily
107
+ time: 2014-12-11 18:53:34.906911 +01:00
108
+ events: []
109
+ out_of_sync: false
110
+ changed: false
111
+ resource_type: Schedule
112
+ title: daily
113
+ skipped: false
114
+ failed: false
115
+ containment_path:
116
+ - Schedule[daily]
117
+ Schedule[monthly]: !ruby/object:Puppet::Resource::Status
118
+ resource: Schedule[monthly]
119
+ file:
120
+ line:
121
+ evaluation_time: 3.0788e-05
122
+ change_count: 0
123
+ out_of_sync_count: 0
124
+ tags:
125
+ - schedule
126
+ - monthly
127
+ time: 2014-12-11 18:53:34.907052 +01:00
128
+ events: []
129
+ out_of_sync: false
130
+ changed: false
131
+ resource_type: Schedule
132
+ title: monthly
133
+ skipped: false
134
+ failed: false
135
+ containment_path:
136
+ - Schedule[monthly]
137
+ Schedule[hourly]: !ruby/object:Puppet::Resource::Status
138
+ resource: Schedule[hourly]
139
+ file:
140
+ line:
141
+ evaluation_time: 2.8306e-05
142
+ change_count: 0
143
+ out_of_sync_count: 0
144
+ tags:
145
+ - schedule
146
+ - hourly
147
+ time: 2014-12-11 18:53:34.907141 +01:00
148
+ events: []
149
+ out_of_sync: false
150
+ changed: false
151
+ resource_type: Schedule
152
+ title: hourly
153
+ skipped: false
154
+ failed: false
155
+ containment_path:
156
+ - Schedule[hourly]
157
+ Notify[shit]: !ruby/object:Puppet::Resource::Status
158
+ resource: Notify[shit]
159
+ file:
160
+ line: 1
161
+ evaluation_time: 0.000353069
162
+ change_count: 1
163
+ out_of_sync_count: 1
164
+ tags:
165
+ - notify
166
+ - shit
167
+ - class
168
+ time: 2014-12-11 18:53:34.907680 +01:00
169
+ events:
170
+ - !ruby/object:Puppet::Transaction::Event
171
+ audited: false
172
+ property: message
173
+ previous_value: !ruby/sym absent
174
+ desired_value: shit
175
+ historical_value:
176
+ message: "defined 'message' as 'shit'"
177
+ name: !ruby/sym message_changed
178
+ status: success
179
+ time: 2014-12-11 18:53:34.907822 +01:00
180
+ out_of_sync: true
181
+ changed: true
182
+ resource_type: Notify
183
+ title: shit
184
+ skipped: false
185
+ failed: false
186
+ containment_path:
187
+ - Stage[main]
188
+ - Main
189
+ - Notify[shit]
190
+ Schedule[never]: !ruby/object:Puppet::Resource::Status
191
+ resource: Schedule[never]
192
+ file:
193
+ line:
194
+ evaluation_time: 3.5455e-05
195
+ change_count: 0
196
+ out_of_sync_count: 0
197
+ tags:
198
+ - schedule
199
+ - never
200
+ time: 2014-12-11 18:53:34.908164 +01:00
201
+ events: []
202
+ out_of_sync: false
203
+ changed: false
204
+ resource_type: Schedule
205
+ title: never
206
+ skipped: false
207
+ failed: false
208
+ containment_path:
209
+ - Schedule[never]
210
+ Filebucket[puppet]: !ruby/object:Puppet::Resource::Status
211
+ resource: Filebucket[puppet]
212
+ file:
213
+ line:
214
+ evaluation_time: 3.8739e-05
215
+ change_count: 0
216
+ out_of_sync_count: 0
217
+ tags:
218
+ - filebucket
219
+ - puppet
220
+ time: 2014-12-11 18:53:34.908274 +01:00
221
+ events: []
222
+ out_of_sync: false
223
+ changed: false
224
+ resource_type: Filebucket
225
+ title: puppet
226
+ skipped: false
227
+ failed: false
228
+ containment_path:
229
+ - Filebucket[puppet]
230
+ Schedule[weekly]: !ruby/object:Puppet::Resource::Status
231
+ resource: Schedule[weekly]
232
+ file:
233
+ line:
234
+ evaluation_time: 3.0863e-05
235
+ change_count: 0
236
+ out_of_sync_count: 0
237
+ tags:
238
+ - schedule
239
+ - weekly
240
+ time: 2014-12-11 18:53:34.908373 +01:00
241
+ events: []
242
+ out_of_sync: false
243
+ changed: false
244
+ resource_type: Schedule
245
+ title: weekly
246
+ skipped: false
247
+ failed: false
248
+ containment_path:
249
+ - Schedule[weekly]
250
+ Schedule[puppet]: !ruby/object:Puppet::Resource::Status
251
+ resource: Schedule[puppet]
252
+ file:
253
+ line:
254
+ evaluation_time: 2.8865e-05
255
+ change_count: 0
256
+ out_of_sync_count: 0
257
+ tags:
258
+ - schedule
259
+ - puppet
260
+ time: 2014-12-11 18:53:34.908461 +01:00
261
+ events: []
262
+ out_of_sync: false
263
+ changed: false
264
+ resource_type: Schedule
265
+ title: puppet
266
+ skipped: false
267
+ failed: false
268
+ containment_path:
269
+ - Schedule[puppet]
270
+ host: ksuszynski-gs70.suszynski.org
271
+ time: 2014-12-11 18:53:34.770130 +01:00
272
+ kind: apply
273
+ report_format: 4
274
+ puppet_version: "3.7.3"
275
+ configuration_version: 1418320414
276
+ transaction_uuid: "814b7333-0fb4-4379-a670-dd4a06929643"
277
+ environment: production
278
+ status: changed