zfstools 0.2.2 → 0.3.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.
data/README.md CHANGED
@@ -49,6 +49,14 @@ Setting a MySQL dataset's property to `mysql` will hook it into the `zfs-snapsho
49
49
 
50
50
  zfs set com.sun:auto-snapshot=mysql DATASET
51
51
 
52
+ ##### PostgreSQL Support
53
+
54
+ Setting a PostgreSQL dataset's property to `postgresql` will cause zfs-auto-snapshot to put postgresql in online backup mode for the snapshot.
55
+
56
+ zfs set com.sun:auto-snapshot=postgresql DATASET
57
+
58
+ The user executing `zfs-auto-snapshot` will require passwordless login to the `postgres` database and will require either REPLICATION or SUPERUSER privileges. The easiest approach is to set up a trust or ident record in your pg_hba.conf. The `zfs-auto-snapshot` script will execute pg_start_backup() prior to saving the snapshot and execute pg_stop_backup() afterwards.
59
+
52
60
  ##### Overrides
53
61
 
54
62
  You can override a child dataset to use, or not use auto snapshotting by settings its flag with the given interval.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.3.0
data/lib/zfstools.rb CHANGED
@@ -111,7 +111,7 @@ def filter_datasets(datasets, included_excluded_datasets, property)
111
111
  # If the dataset is already included/excluded, skip it (for override checking)
112
112
  next if all_datasets.include? dataset
113
113
  value = dataset.properties[property]
114
- if value == "true" || value == "mysql"
114
+ if ["true","mysql","postgresql"].include? value
115
115
  included_excluded_datasets['included'] << dataset
116
116
  elsif value
117
117
  included_excluded_datasets['excluded'] << dataset
@@ -6,7 +6,7 @@ module Zfs
6
6
  def initialize(name, properties={}, options={})
7
7
  @name = name
8
8
  @properties = properties
9
- if properties[snapshot_property] == "mysql"
9
+ if ["mysql","postgresql"].include? properties[snapshot_property]
10
10
  self.contains_db!(properties[snapshot_property])
11
11
  end
12
12
  end
@@ -59,6 +59,11 @@ module Zfs
59
59
  UNLOCK TABLES;
60
60
  EOF
61
61
  cmd = %Q[mysql -e "#{sql_query}"]
62
+ when 'postgresql'
63
+ sql_pre_query = "SELECT PG_START_BACKUP('zfs-auto-snapshot');"
64
+ sql_post_query = "SLEECT PG_STOP_BACKUP();"
65
+ zfs_cmd = cmd
66
+ cmd = %Q[(psql -c "#{sql_pre_query}" postgres && #{zfs_cmd} ) ; psql -c "#{sql_post_query}" postgres]
62
67
  end
63
68
  end
64
69
 
data/zfstools.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "zfstools"
8
- s.version = "0.2.2"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Bryan Drewery"]
12
- s.date = "2013-02-04"
12
+ s.date = "2013-09-18"
13
13
  s.description = "ZFS admin scripts, such as automatic snapshots, mysql snapshotting, scrubbing, etc."
14
14
  s.email = "bryan@shatow.net"
15
15
  s.executables = ["zfs-auto-snapshot", "zfs-cleanup-snapshots", "zfs-snapshot-mysql"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zfstools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
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: 2013-02-04 00:00:00.000000000 Z
12
+ date: 2013-09-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &20923260 !ruby/object:Gem::Requirement
16
+ requirement: &16686440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.8.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *20923260
24
+ version_requirements: *16686440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yard
27
- requirement: &19966840 !ruby/object:Gem::Requirement
27
+ requirement: &16683840 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0.7'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *19966840
35
+ version_requirements: *16683840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &19964120 !ruby/object:Gem::Requirement
38
+ requirement: &16698280 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.12'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *19964120
46
+ version_requirements: *16698280
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: cucumber
49
- requirement: &19963020 !ruby/object:Gem::Requirement
49
+ requirement: &16697540 !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: *19963020
57
+ version_requirements: *16697540
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
- requirement: &19960960 !ruby/object:Gem::Requirement
60
+ requirement: &16696100 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.0.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *19960960
68
+ version_requirements: *16696100
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &19960160 !ruby/object:Gem::Requirement
71
+ requirement: &16693840 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 1.8.3
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *19960160
79
+ version_requirements: *16693840
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: simplecov
82
- requirement: &19975720 !ruby/object:Gem::Requirement
82
+ requirement: &16692980 !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: *19975720
90
+ version_requirements: *16692980
91
91
  description: ZFS admin scripts, such as automatic snapshots, mysql snapshotting, scrubbing,
92
92
  etc.
93
93
  email: bryan@shatow.net
@@ -137,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
137
  version: '0'
138
138
  segments:
139
139
  - 0
140
- hash: 1946936266483183679
140
+ hash: 365318782876626862
141
141
  required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  none: false
143
143
  requirements: