backup 4.0.4 → 4.0.5
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/lib/backup.rb +2 -0
- data/lib/backup/config/dsl.rb +1 -1
- data/lib/backup/database/mysql.rb +0 -1
- data/lib/backup/database/postgresql.rb +2 -2
- data/lib/backup/notifier/pagerduty.rb +81 -0
- data/lib/backup/version.rb +1 -1
- data/templates/cli/notifiers/pagerduty +12 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3962cf879bd26668539060945c2081db3bd13046
|
4
|
+
data.tar.gz: 061ae2f749d7fc1494ac20c4f116e1201e8ce86a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 077072ee73e085c6151592a2506c2e65895d9a435cfdec6232c34fc67452a0f70356105de93b7aa40410ad21f6666da0f143a922edb180e8872d97a06a4e9014
|
7
|
+
data.tar.gz: bb86e8d7e30d2085691b598a662e3bdb10ffc30c5ba45fe5a2f8065559129dd3a0e931cc27e47eb957809131393d114e515e1d930827dcf5ed6d0cc913c9ff77
|
data/lib/backup.rb
CHANGED
@@ -11,6 +11,7 @@ require 'thread'
|
|
11
11
|
|
12
12
|
require 'open4'
|
13
13
|
require 'thor'
|
14
|
+
require 'shellwords'
|
14
15
|
|
15
16
|
require 'excon'
|
16
17
|
# Include response.inspect in error messages.
|
@@ -105,6 +106,7 @@ module Backup
|
|
105
106
|
autoload :Campfire, File.join(NOTIFIER_PATH, 'campfire')
|
106
107
|
autoload :Prowl, File.join(NOTIFIER_PATH, 'prowl')
|
107
108
|
autoload :Hipchat, File.join(NOTIFIER_PATH, 'hipchat')
|
109
|
+
autoload :PagerDuty, File.join(NOTIFIER_PATH, 'pagerduty')
|
108
110
|
autoload :Pushover, File.join(NOTIFIER_PATH, 'pushover')
|
109
111
|
autoload :Slack, File.join(NOTIFIER_PATH, 'slack')
|
110
112
|
autoload :HttpPost, File.join(NOTIFIER_PATH, 'http_post')
|
data/lib/backup/config/dsl.rb
CHANGED
@@ -88,7 +88,7 @@ module Backup
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def password_option
|
91
|
-
"PGPASSWORD
|
91
|
+
"PGPASSWORD=#{ Shellwords.escape(password) } " if password
|
92
92
|
end
|
93
93
|
|
94
94
|
def sudo_option
|
@@ -96,7 +96,7 @@ module Backup
|
|
96
96
|
end
|
97
97
|
|
98
98
|
def username_option
|
99
|
-
"--username
|
99
|
+
"--username=#{ Shellwords.escape(username) }" if username
|
100
100
|
end
|
101
101
|
|
102
102
|
def connectivity_options
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'pagerduty'
|
3
|
+
|
4
|
+
module Backup
|
5
|
+
module Notifier
|
6
|
+
class PagerDuty < Base
|
7
|
+
|
8
|
+
##
|
9
|
+
# PagerDuty Service API Key. Should be a 32 character hex string.
|
10
|
+
attr_accessor :service_key
|
11
|
+
|
12
|
+
##
|
13
|
+
# Determines if a backup with a warning should resolve an incident rather
|
14
|
+
# than trigger one.
|
15
|
+
#
|
16
|
+
# Defaults to false.
|
17
|
+
attr_accessor :resolve_on_warning
|
18
|
+
|
19
|
+
def initialize(mode, &block)
|
20
|
+
super
|
21
|
+
instance_eval(&block) if block_given?
|
22
|
+
|
23
|
+
@resolve_on_warning ||= false
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
##
|
29
|
+
# Trigger or resolve a PagerDuty incident for this model
|
30
|
+
#
|
31
|
+
# `status` indicates one of the following:
|
32
|
+
#
|
33
|
+
# `:success`
|
34
|
+
# : The backup completed successfully.
|
35
|
+
# : The incident will be resolved if `on_success` is `true`.
|
36
|
+
#
|
37
|
+
# `:warning`
|
38
|
+
# : The backup completed successfully, but warnings were logged.
|
39
|
+
# : An incident will be triggered if `on_warning` or `on_success` is `true`.
|
40
|
+
#
|
41
|
+
# `:failure`
|
42
|
+
# : The backup operation failed.
|
43
|
+
# : An incident will be triggered if `on_failure` is `true`.
|
44
|
+
#
|
45
|
+
def notify!(status)
|
46
|
+
incident_description = "Backup - #{model.label}"
|
47
|
+
incident_key = "backup/#{model.trigger}"
|
48
|
+
incident_details = {
|
49
|
+
:incident_key => incident_key,
|
50
|
+
:details => {
|
51
|
+
:trigger => model.trigger,
|
52
|
+
:label => model.label,
|
53
|
+
:started_at => model.started_at,
|
54
|
+
:finished_at => model.finished_at,
|
55
|
+
:duration => model.duration,
|
56
|
+
:status => status,
|
57
|
+
:exception => model.exception
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
event_type = case status
|
62
|
+
when :success then :resolve
|
63
|
+
when :warning then resolve_on_warning ? :resolve : :trigger
|
64
|
+
when :failure then :trigger
|
65
|
+
end
|
66
|
+
|
67
|
+
case event_type
|
68
|
+
when :trigger
|
69
|
+
pagerduty.trigger(incident_description, incident_details)
|
70
|
+
when :resolve
|
71
|
+
incident = pagerduty.get_incident(incident_key)
|
72
|
+
incident.resolve(incident_description, incident_details)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def pagerduty
|
77
|
+
@pagerduty ||= Pagerduty.new(service_key)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/lib/backup/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
##
|
2
|
+
# PagerDuty [Notifier]
|
3
|
+
#
|
4
|
+
|
5
|
+
notify_by PagerDuty do |pagerduty|
|
6
|
+
pagerduty.on_success = true
|
7
|
+
pagerduty.on_warning = true
|
8
|
+
pagerduty.on_failure = true
|
9
|
+
|
10
|
+
pagerduty.service_key = '0123456789abcdef01234567890abcde'
|
11
|
+
pagerduty.resolve_on_warning = true
|
12
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael van Rooijen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08
|
11
|
+
date: 2014-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -416,6 +416,20 @@ dependencies:
|
|
416
416
|
- - '='
|
417
417
|
- !ruby/object:Gem::Version
|
418
418
|
version: 1.3.0
|
419
|
+
- !ruby/object:Gem::Dependency
|
420
|
+
name: pagerduty
|
421
|
+
requirement: !ruby/object:Gem::Requirement
|
422
|
+
requirements:
|
423
|
+
- - '='
|
424
|
+
- !ruby/object:Gem::Version
|
425
|
+
version: 2.0.0
|
426
|
+
type: :runtime
|
427
|
+
prerelease: false
|
428
|
+
version_requirements: !ruby/object:Gem::Requirement
|
429
|
+
requirements:
|
430
|
+
- - '='
|
431
|
+
- !ruby/object:Gem::Version
|
432
|
+
version: 2.0.0
|
419
433
|
- !ruby/object:Gem::Dependency
|
420
434
|
name: polyglot
|
421
435
|
requirement: !ruby/object:Gem::Requirement
|
@@ -596,6 +610,7 @@ files:
|
|
596
610
|
- lib/backup/notifier/http_post.rb
|
597
611
|
- lib/backup/notifier/mail.rb
|
598
612
|
- lib/backup/notifier/nagios.rb
|
613
|
+
- lib/backup/notifier/pagerduty.rb
|
599
614
|
- lib/backup/notifier/prowl.rb
|
600
615
|
- lib/backup/notifier/pushover.rb
|
601
616
|
- lib/backup/notifier/slack.rb
|
@@ -649,6 +664,7 @@ files:
|
|
649
664
|
- templates/cli/notifiers/http_post
|
650
665
|
- templates/cli/notifiers/mail
|
651
666
|
- templates/cli/notifiers/nagios
|
667
|
+
- templates/cli/notifiers/pagerduty
|
652
668
|
- templates/cli/notifiers/prowl
|
653
669
|
- templates/cli/notifiers/pushover
|
654
670
|
- templates/cli/notifiers/slack
|