do_snapshot 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 365c1b809b10cef71fa0837e881b6a7a35845a44
4
- data.tar.gz: 1cd21fa74d0769895af9bd3fcf477e6188dbc59e
3
+ metadata.gz: f4c4999ce47e4ce7b2466c14205933af0cbdc961
4
+ data.tar.gz: 0403072d2dd494b8f03090e7c4b7624414c9d7b8
5
5
  SHA512:
6
- metadata.gz: 27c09632a56393fcc6d1918eb5ed980c80913087d7ad9780d2246840260fff299ddb8e1105cd471f0227854b774efab16447ac8c54b8d2d7eccbf861651aae97
7
- data.tar.gz: 465885d5d85ce2972287ffc83d581f86c0029698d6ec374aa11ae37a34ff8bda875b54fc015bf94c7f324bc342ae8bb66e9838fe4265bb36061ba5676040c593
6
+ metadata.gz: 6c9866805ad171483316b5dd4fbb1e674dff9d779b097e23757167af90f99cb4acd39fd9827b1fbe3d52a5f4a8aae06578c49fa81ad9defea6f535be4183bb26
7
+ data.tar.gz: 5ac4d9c275029df7a2300c258ba7b75268657353e906c01cfc375189a12c4d5be64e27253bb49e52df39a5656e67259f126ca28c4659a58a78cc5922837c6eee
data/README.md CHANGED
@@ -4,6 +4,7 @@ You can use this gem to backup's DigitalOcean droplet's via snapshot.
4
4
 
5
5
  Here some features:
6
6
 
7
+ - Multiple threads out of the box.
7
8
  - Binary for cron and command-line.
8
9
  - Mail notification when maximum of snapshots for droplet reached.
9
10
  - Custom mail settings (You can set [Pony](https://github.com/benprew/pony) mail settings).
data/do_snapshot.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = DoSnapshot::VERSION
9
9
  spec.authors = ['Alexander Merkulov']
10
10
  spec.email = ['sasha@merqlove.ru']
11
- spec.summary = %q{Snapshot creator for Digital Ocean droplets. Use it with Cron or other tools.}
12
- spec.description = %q{Snapshot creator for Digital Ocean droplets. Use it with Cron or other tools.}
11
+ spec.summary = %q{Snapshot creator for Digital Ocean droplets. Multi-threading inside. Use it with Cron or other tools.}
12
+ spec.description = %q{Snapshot creator for Digital Ocean droplets. Multi-threading inside. Use it with Cron or other tools.}
13
13
  spec.homepage = 'http://github.com/merqlove/do_snapshot'
14
14
  spec.license = 'MIT'
15
15
 
@@ -2,6 +2,7 @@ require 'digitalocean'
2
2
  require 'date'
3
3
  require 'pony'
4
4
  require 'core_ext/hash'
5
+ require 'thread'
5
6
 
6
7
  module DoSnapshot
7
8
  # Our commands live here :)
@@ -15,7 +16,8 @@ module DoSnapshot
15
16
  send("#{key}=", option) unless skip.include? key
16
17
  end
17
18
 
18
- self.notify = false
19
+ self.notify = false
20
+ self.threads = []
19
21
 
20
22
  work_droplets
21
23
  email_message if notify && mail
@@ -33,6 +35,7 @@ module DoSnapshot
33
35
  attr_accessor :smtp
34
36
  attr_accessor :stop
35
37
  attr_accessor :notify
38
+ attr_accessor :threads
36
39
 
37
40
  # Getting droplets list from API.
38
41
  # And store into object.
@@ -60,6 +63,13 @@ module DoSnapshot
60
63
 
61
64
  prepare_instance instance.droplet
62
65
  end
66
+ thread_chain
67
+ end
68
+
69
+ # Threads review
70
+ #
71
+ def thread_chain
72
+ threads.each {|t| t.join}
63
73
  end
64
74
 
65
75
  # Preparing instance to take snapshot.
@@ -79,15 +89,17 @@ module DoSnapshot
79
89
 
80
90
  # Stopping instance.
81
91
  Log.debug 'Shutting down droplet.'
82
- unless instance.status.include? 'off'
83
- event = Digitalocean::Droplet.power_off(instance.id)
84
- if event.status.include? 'OK'
85
- sleep 1.3 until get_event_status(event.event_id)
92
+ threads << Thread.new do
93
+ unless instance.status.include? 'off'
94
+ event = Digitalocean::Droplet.power_off(instance.id)
95
+ if event.status.include? 'OK'
96
+ sleep 1.3 until get_event_status(event.event_id)
97
+ end
86
98
  end
87
- end
88
99
 
89
- # Create snapshot.
90
- create_snapshot instance, warning_size
100
+ # Create snapshot.
101
+ create_snapshot instance, warning_size
102
+ end
91
103
  end
92
104
 
93
105
  # Trying to create a snapshot.
@@ -1,5 +1,5 @@
1
1
  # Current version
2
2
  #
3
3
  module DoSnapshot
4
- VERSION = '0.0.3'
4
+ VERSION = '0.0.4'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: do_snapshot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Merkulov
@@ -80,8 +80,8 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: Snapshot creator for Digital Ocean droplets. Use it with Cron or other
84
- tools.
83
+ description: Snapshot creator for Digital Ocean droplets. Multi-threading inside.
84
+ Use it with Cron or other tools.
85
85
  email:
86
86
  - sasha@merqlove.ru
87
87
  executables:
@@ -127,6 +127,7 @@ rubyforge_project:
127
127
  rubygems_version: 2.2.2
128
128
  signing_key:
129
129
  specification_version: 4
130
- summary: Snapshot creator for Digital Ocean droplets. Use it with Cron or other tools.
130
+ summary: Snapshot creator for Digital Ocean droplets. Multi-threading inside. Use
131
+ it with Cron or other tools.
131
132
  test_files:
132
133
  - test/.keep