orchestration 0.1.0 → 0.2.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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -0
  3. data/.rubocop.yml +14 -0
  4. data/Gemfile +4 -2
  5. data/Makefile +5 -0
  6. data/README.md +82 -16
  7. data/Rakefile +5 -3
  8. data/TODO +2 -0
  9. data/bin/rspec +29 -0
  10. data/bin/rubocop +29 -0
  11. data/config/locales/en.yml +16 -0
  12. data/lib/orchestration/docker_compose/database_service.rb +51 -0
  13. data/lib/orchestration/docker_compose/mongo_service.rb +27 -0
  14. data/lib/orchestration/docker_compose/rabbitmq_service.rb +23 -0
  15. data/lib/orchestration/docker_compose/services.rb +48 -0
  16. data/lib/orchestration/docker_compose.rb +11 -0
  17. data/lib/orchestration/environment.rb +47 -0
  18. data/lib/orchestration/errors.rb +7 -0
  19. data/lib/orchestration/file_helpers.rb +88 -0
  20. data/lib/orchestration/healthcheck_base.rb +21 -0
  21. data/lib/orchestration/install_generator.rb +95 -0
  22. data/lib/orchestration/railtie.rb +9 -0
  23. data/lib/orchestration/service_check.rb +81 -0
  24. data/lib/orchestration/services/database/adapters/mysql2.rb +27 -0
  25. data/lib/orchestration/services/database/adapters/postgresql.rb +27 -0
  26. data/lib/orchestration/services/database/adapters/sqlite3.rb +23 -0
  27. data/lib/orchestration/services/database/adapters.rb +14 -0
  28. data/lib/orchestration/services/database/configuration.rb +114 -0
  29. data/lib/orchestration/services/database/healthcheck.rb +30 -0
  30. data/lib/orchestration/services/database.rb +15 -0
  31. data/lib/orchestration/services/mongo/configuration.rb +55 -0
  32. data/lib/orchestration/services/mongo/healthcheck.rb +34 -0
  33. data/lib/orchestration/services/mongo.rb +12 -0
  34. data/lib/orchestration/services/rabbitmq/configuration.rb +36 -0
  35. data/lib/orchestration/services/rabbitmq/healthcheck.rb +37 -0
  36. data/lib/orchestration/services/rabbitmq.rb +12 -0
  37. data/lib/orchestration/services.rb +10 -0
  38. data/lib/orchestration/settings.rb +43 -0
  39. data/lib/orchestration/templates/Dockerfile.tt +11 -0
  40. data/lib/orchestration/templates/Makefile.tt +53 -0
  41. data/lib/orchestration/terminal.rb +44 -0
  42. data/lib/orchestration/version.rb +3 -1
  43. data/lib/orchestration.rb +25 -2
  44. data/lib/tasks/orchestration.rake +39 -0
  45. data/orchestration.gemspec +34 -17
  46. metadata +213 -7
  47. data/CODE_OF_CONDUCT.md +0 -74
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Orchestration
4
+ COLOR_MAP = {
5
+ failure: :light_red,
6
+ error: :red,
7
+ waiting: :yellow,
8
+ ready: :green,
9
+ create: :green,
10
+ update: :yellow,
11
+ identical: :blue,
12
+ status: :blue,
13
+ setup: :blue,
14
+ input: :red,
15
+ skip: :light_yellow
16
+ }.freeze
17
+
18
+ class Terminal
19
+ def write(desc, message, color_name = nil, newline = true)
20
+ output = newline ? "#{message}\n" : message.to_s
21
+ STDOUT.print colorize(desc, output, color_name)
22
+ end
23
+
24
+ def read(message)
25
+ write(:input, message + ' ', nil, false)
26
+ STDIN.gets.chomp
27
+ end
28
+
29
+ private
30
+
31
+ def colorize(desc, message, color_name)
32
+ color = if color_name.nil?
33
+ COLOR_MAP.fetch(desc)
34
+ else
35
+ COLOR_MAP.fetch(color_name)
36
+ end
37
+ desc
38
+ .to_s
39
+ .rjust(15)
40
+ .colorize(mode: :default, color: color)
41
+ .concat(' ' + message)
42
+ end
43
+ end
44
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Orchestration
2
- VERSION = "0.1.0"
4
+ VERSION = '0.2.0'
3
5
  end
data/lib/orchestration.rb CHANGED
@@ -1,5 +1,28 @@
1
- require "orchestration/version"
1
+ # frozen_string_literal: true
2
+
3
+ require 'colorize'
4
+ require 'erubis'
5
+ require 'i18n'
6
+ require 'rails'
7
+
8
+ I18n.load_path += Dir[File.join(File.expand_path('..', __dir__),
9
+ 'config', 'locales', '**', '*.yml')]
10
+
11
+ require 'orchestration/docker_compose'
12
+ require 'orchestration/environment'
13
+ require 'orchestration/errors'
14
+ require 'orchestration/file_helpers'
15
+ require 'orchestration/healthcheck_base'
16
+ require 'orchestration/install_generator'
17
+ require 'orchestration/railtie'
18
+ require 'orchestration/service_check'
19
+ require 'orchestration/services'
20
+ require 'orchestration/settings'
21
+ require 'orchestration/terminal'
22
+ require 'orchestration/version'
2
23
 
3
24
  module Orchestration
4
- # Your code goes here...
25
+ def self.root
26
+ Pathname.new(File.dirname(__dir__))
27
+ end
5
28
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'orchestration'
4
+
5
+ namespace :orchestration do
6
+ desc 'Initialise boilerplate for adding Docker to your application'
7
+ task :install do
8
+ Orchestration::InstallGenerator.start
9
+ end
10
+
11
+ namespace :db do
12
+ desc 'Wait for database to become available'
13
+ task :wait do
14
+ Orchestration::Services::Database::Healthcheck.start
15
+ end
16
+ end
17
+
18
+ namespace :mongo do
19
+ desc 'Wait for mongo to become available'
20
+ task :wait do
21
+ Orchestration::Services::Mongo::Healthcheck.start
22
+ end
23
+ end
24
+
25
+ namespace :rabbitmq do
26
+ desc 'Wait for database to become available'
27
+ task :wait do
28
+ Orchestration::Services::RabbitMQ::Healthcheck.start
29
+ end
30
+ end
31
+
32
+ namespace :docker do
33
+ desc 'Output configured Docker username'
34
+ task :username do
35
+ STDOUT.write(Orchestration::Environment.new.settings('docker.username'))
36
+ STDOUT.flush
37
+ end
38
+ end
39
+ end
@@ -1,26 +1,43 @@
1
+ # frozen_string_literal: true
1
2
 
2
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "orchestration/version"
5
+ require 'orchestration/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "orchestration"
8
- spec.version = Orchestration::VERSION
9
- spec.authors = ["Bob Farrell"]
10
- spec.email = ["robertanthonyfarrell@gmail.com"]
8
+ url = 'https://bitbucket.org/orchestration_developers/orchestration/src'
9
+ spec.name = 'orchestration'
10
+ spec.version = Orchestration::VERSION
11
+ spec.authors = ['Bob Farrell']
12
+ spec.email = ['bob@orchestration.co.uk']
11
13
 
12
- spec.summary = %q{Docker orchestration for Ruby applications}
13
- spec.description = %q{Toolkit for consistent and easy Docker orchestration }
14
- spec.homepage = "https://github.com/bobf/orchestration"
14
+ spec.summary = 'Docker orchestration toolkit'
15
+ spec.description = 'Tools to help launch apps in Docker'
16
+ spec.homepage = url
15
17
 
16
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
17
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
+ `git ls-files -z`.split("\x0").reject do |f|
20
+ f.match(%r{^(test|spec|features)/})
21
+ end
18
22
  end
19
- spec.bindir = "bin"
20
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
- spec.require_paths = ["lib"]
23
+ spec.bindir = 'bin'
24
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
25
+ spec.require_paths = ['lib']
22
26
 
23
- spec.add_development_dependency "bundler", "~> 1.16"
24
- spec.add_development_dependency "rake", "~> 10.0"
25
- spec.add_development_dependency "rspec", "~> 3.0"
27
+ spec.add_runtime_dependency 'colorize', '~> 0.8.1'
28
+ spec.add_runtime_dependency 'erubis', '~> 2.7'
29
+ spec.add_runtime_dependency 'i18n', '>= 0.5'
30
+
31
+ spec.add_development_dependency 'activerecord', '~> 5.2'
32
+ spec.add_development_dependency 'bundler', '~> 1.16'
33
+ spec.add_development_dependency 'bunny', '~> 2.12'
34
+ spec.add_development_dependency 'byebug', '~> 10.0'
35
+ spec.add_development_dependency 'mongoid', '~> 7.0'
36
+ spec.add_development_dependency 'rails', '~> 5.2'
37
+ spec.add_development_dependency 'rake', '~> 10.0'
38
+ spec.add_development_dependency 'rspec', '~> 3.0'
39
+ spec.add_development_dependency 'rspec-its', '~> 1.2'
40
+ spec.add_development_dependency 'rubocop', '~> 0.59.2'
41
+ spec.add_development_dependency 'sqlite3', '~> 1.3'
42
+ spec.add_development_dependency 'webmock', '~> 3.4'
26
43
  end
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orchestration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Farrell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-21 00:00:00.000000000 Z
11
+ date: 2018-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colorize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.8.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: erubis
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: i18n
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0.5'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activerecord
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.2'
13
69
  - !ruby/object:Gem::Dependency
14
70
  name: bundler
15
71
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +80,62 @@ dependencies:
24
80
  - - "~>"
25
81
  - !ruby/object:Gem::Version
26
82
  version: '1.16'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bunny
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.12'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.12'
97
+ - !ruby/object:Gem::Dependency
98
+ name: byebug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '10.0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: mongoid
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '7.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '7.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '5.2'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '5.2'
27
139
  - !ruby/object:Gem::Dependency
28
140
  name: rake
29
141
  requirement: !ruby/object:Gem::Requirement
@@ -52,28 +164,122 @@ dependencies:
52
164
  - - "~>"
53
165
  - !ruby/object:Gem::Version
54
166
  version: '3.0'
55
- description: 'Toolkit for consistent and easy Docker orchestration '
167
+ - !ruby/object:Gem::Dependency
168
+ name: rspec-its
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.2'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.2'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rubocop
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 0.59.2
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 0.59.2
195
+ - !ruby/object:Gem::Dependency
196
+ name: sqlite3
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.3'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '1.3'
209
+ - !ruby/object:Gem::Dependency
210
+ name: webmock
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '3.4'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '3.4'
223
+ description: Tools to help launch apps in Docker
56
224
  email:
57
- - robertanthonyfarrell@gmail.com
225
+ - bob@orchestration.co.uk
58
226
  executables:
59
227
  - console
228
+ - rspec
229
+ - rubocop
60
230
  - setup
61
231
  extensions: []
62
232
  extra_rdoc_files: []
63
233
  files:
64
234
  - ".gitignore"
65
235
  - ".rspec"
236
+ - ".rubocop.yml"
66
237
  - ".travis.yml"
67
- - CODE_OF_CONDUCT.md
68
238
  - Gemfile
239
+ - Makefile
69
240
  - README.md
70
241
  - Rakefile
242
+ - TODO
71
243
  - bin/console
244
+ - bin/rspec
245
+ - bin/rubocop
72
246
  - bin/setup
247
+ - config/locales/en.yml
73
248
  - lib/orchestration.rb
249
+ - lib/orchestration/docker_compose.rb
250
+ - lib/orchestration/docker_compose/database_service.rb
251
+ - lib/orchestration/docker_compose/mongo_service.rb
252
+ - lib/orchestration/docker_compose/rabbitmq_service.rb
253
+ - lib/orchestration/docker_compose/services.rb
254
+ - lib/orchestration/environment.rb
255
+ - lib/orchestration/errors.rb
256
+ - lib/orchestration/file_helpers.rb
257
+ - lib/orchestration/healthcheck_base.rb
258
+ - lib/orchestration/install_generator.rb
259
+ - lib/orchestration/railtie.rb
260
+ - lib/orchestration/service_check.rb
261
+ - lib/orchestration/services.rb
262
+ - lib/orchestration/services/database.rb
263
+ - lib/orchestration/services/database/adapters.rb
264
+ - lib/orchestration/services/database/adapters/mysql2.rb
265
+ - lib/orchestration/services/database/adapters/postgresql.rb
266
+ - lib/orchestration/services/database/adapters/sqlite3.rb
267
+ - lib/orchestration/services/database/configuration.rb
268
+ - lib/orchestration/services/database/healthcheck.rb
269
+ - lib/orchestration/services/mongo.rb
270
+ - lib/orchestration/services/mongo/configuration.rb
271
+ - lib/orchestration/services/mongo/healthcheck.rb
272
+ - lib/orchestration/services/rabbitmq.rb
273
+ - lib/orchestration/services/rabbitmq/configuration.rb
274
+ - lib/orchestration/services/rabbitmq/healthcheck.rb
275
+ - lib/orchestration/settings.rb
276
+ - lib/orchestration/templates/Dockerfile.tt
277
+ - lib/orchestration/templates/Makefile.tt
278
+ - lib/orchestration/terminal.rb
74
279
  - lib/orchestration/version.rb
280
+ - lib/tasks/orchestration.rake
75
281
  - orchestration.gemspec
76
- homepage: https://github.com/bobf/orchestration
282
+ homepage: https://bitbucket.org/orchestration_developers/orchestration/src
77
283
  licenses: []
78
284
  metadata: {}
79
285
  post_install_message:
@@ -95,5 +301,5 @@ rubyforge_project:
95
301
  rubygems_version: 2.5.2.2
96
302
  signing_key:
97
303
  specification_version: 4
98
- summary: Docker orchestration for Ruby applications
304
+ summary: Docker orchestration toolkit
99
305
  test_files: []