aws_docker_utils 0.0.1
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/lib/collectors/to_s3.rb +31 -0
- data/lib/docker_compose/client.rb +14 -0
- data/lib/s3/client.rb +49 -0
- data/lib/utils.rb +15 -0
- metadata +65 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
require "./utils"
|
2
|
+
require "./docker_compose/client"
|
3
|
+
require "./s3/client"
|
4
|
+
|
5
|
+
module Collectors
|
6
|
+
class ToS3
|
7
|
+
|
8
|
+
def initialize(opts={})
|
9
|
+
@bucket_name = opts[:bucket_name]
|
10
|
+
@db_name = opts[:db_name]
|
11
|
+
@task_name = opts[:task] || "file"
|
12
|
+
@container_name = opts[:container_name]
|
13
|
+
|
14
|
+
@file_name = "#{`date '+#{@task_name}_%y-%m-%d_%H-%M'`.chop}.sql"
|
15
|
+
end
|
16
|
+
|
17
|
+
def push
|
18
|
+
DockerCompose::Client.new(container_name: @container_name, cmd: "pg_dump -U postgres -O #{@db_name} > #{@file_name}").exec
|
19
|
+
file_name = Utils.compress(@file_name)
|
20
|
+
|
21
|
+
s3 = S3::Client.new(file_name: file_name, bucket_name: @bucket_name)
|
22
|
+
if s3.put(file_name)
|
23
|
+
Utils.rm(file_name)
|
24
|
+
puts "Pushed to S3."
|
25
|
+
else
|
26
|
+
puts "Unable to do the job."
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
data/lib/s3/client.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'aws-sdk'
|
3
|
+
|
4
|
+
module S3
|
5
|
+
class Client
|
6
|
+
|
7
|
+
DEFAULT_REGION = "us-east-1"
|
8
|
+
|
9
|
+
def initialize(opts={})
|
10
|
+
@bucket_name = opts[:bucket_name]
|
11
|
+
|
12
|
+
config = YAML.load(File.read(File.join(File.dirname(__FILE__), "credentials.yml")))
|
13
|
+
client = Aws::S3::Client.new(
|
14
|
+
region: (config["region"] || DEFAULT_REGION),
|
15
|
+
access_key_id: config["access_key"],
|
16
|
+
secret_access_key: config["secret_key"]
|
17
|
+
)
|
18
|
+
@s3 = Aws::S3::Resource.new(client: client)
|
19
|
+
end
|
20
|
+
|
21
|
+
def put(file_path)
|
22
|
+
raise "Please set bucket name with constructor." if @bucket_name.nil?
|
23
|
+
|
24
|
+
bucket = create_bucket(@bucket_name)
|
25
|
+
obj = bucket.object(File.basename(file_path))
|
26
|
+
|
27
|
+
if obj.upload_file(file_path)
|
28
|
+
return true
|
29
|
+
else
|
30
|
+
puts "could not upload file #{@file_path} to S3."
|
31
|
+
end
|
32
|
+
|
33
|
+
false
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def create_bucket(bucket_name)
|
39
|
+
bucket = @s3.bucket(bucket_name)
|
40
|
+
unless bucket.exists?
|
41
|
+
puts 'Bucket does not exist. Creating...'
|
42
|
+
bucket.create
|
43
|
+
puts 'Done.'
|
44
|
+
end
|
45
|
+
bucket
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
data/lib/utils.rb
ADDED
metadata
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aws_docker_utils
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Bogdan Kulbida
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2016-04-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: aws-sdk
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
description: Utils package for working with AWS and Docker.
|
31
|
+
email: bkulbida@gmail.com
|
32
|
+
executables: []
|
33
|
+
extensions: []
|
34
|
+
extra_rdoc_files: []
|
35
|
+
files:
|
36
|
+
- lib/s3/client.rb
|
37
|
+
- lib/utils.rb
|
38
|
+
- lib/collectors/to_s3.rb
|
39
|
+
- lib/docker_compose/client.rb
|
40
|
+
homepage: http://rubygems.org/gems/aws_docker_utils
|
41
|
+
licenses:
|
42
|
+
- MIT
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
none: false
|
49
|
+
requirements:
|
50
|
+
- - ! '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ! '>='
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 1.8.23.2
|
62
|
+
signing_key:
|
63
|
+
specification_version: 3
|
64
|
+
summary: Utils package for working with AWS and Docker.
|
65
|
+
test_files: []
|