mcrain 0.3.1 → 0.3.2

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: 5a827b7fa0a1b8a568712e027c1378e0b1f9ef8a
4
- data.tar.gz: 975971865b932bbbaace5fb3b6a1158b564d905b
3
+ metadata.gz: 25014588e4b0a4b53163edc9897c7d28c728bba7
4
+ data.tar.gz: e2c8625531480453ffd5a2c06472657523bf1fe1
5
5
  SHA512:
6
- metadata.gz: eda8ede3198ff5cdd6804e32f5c1cbd2ed9729efd2f5ef5076f6447faf9290aa5fb37854c3c98153339eada33d917acb4f1d7cf42451ebbf0a1ace49c1cff3da
7
- data.tar.gz: 2b4ca199e94c665359f1b027ed09d6c1e1af2a25f407f2a128534be6a7332731b68e01c2bb0df4f40db105676b95962c138f2cce3b6e51b01f2e915a0aae9ec8
6
+ metadata.gz: ff1342b68ede623290b779dd96c37682b2d53ac6630122a99c379304105a5fbdbad3f49bde301ee7ca5d3bd55bf1f30c218fb32d3ecace0cb074296d2705b72f
7
+ data.tar.gz: 77c4fa278139c172f6fbe30f89a37af6d2feb32b6cedd40368cf270ba0c021f3969b45ee8c38b0b9e7841733e60685204038285c2150b310e2cd3389e01c3f1b
data/exe/mcrain CHANGED
@@ -4,13 +4,21 @@
4
4
  require "mcrain"
5
5
 
6
6
  action, service, *args = *ARGV
7
- verbose = ARGV.include?('-V') || ARGV.include?('--verbose')
7
+ verbose = ARGV.include?('-V') || ARGV.include?('--verbose')
8
8
  if action.nil? || service.nil?
9
9
  $stderr.puts(<<MESSAGE)
10
- #{$PROGRAM_NAME} <action> <target> [n] [-v or --verbose]
11
- action: start or stop
12
- service: redis, rabbitmq, mysql or riak
13
- n: cluster size for riak
10
+ #{$PROGRAM_NAME} <action> <service> [n] [-v or --verbose]
11
+ actions: start, stop or pull
12
+
13
+ start:
14
+ service: redis, rabbitmq, mysql or riak
15
+ n: cluster size for riak
16
+
17
+ stop:
18
+ service: redis, rabbitmq, mysql or riak
19
+
20
+ pull:
21
+ service: redis, rabbitmq, mysql, riak or all
14
22
  MESSAGE
15
23
 
16
24
  exit(1)
@@ -25,15 +33,21 @@ begin
25
33
  options = {}
26
34
  case service
27
35
  when "riak" then
28
- raise "DOCKER_RIAK_PATH is blank. Set it the path to docker-riak repository." unless ENV['DOCKER_RIAK_PATH']
29
- Mcrain::Riak.docker_riak_path = ENV['DOCKER_RIAK_PATH']
30
36
  cluster_size = args.shift.to_i
31
37
  cluster_size = 1 if cluster_size == 0
32
38
  options = {cluster_size: cluster_size, automatic_clustering: cluster_size > 1}
33
39
  end
34
40
 
35
- server = Mcrain.lookup(service.to_sym, options)
36
- server.send(action)
41
+ case action
42
+ when "start", "stop" then
43
+ server = Mcrain.lookup(service.to_sym, options)
44
+ server.send(action)
45
+ when "pull" then
46
+ services = (service == "all") ? Mcrain.images.keys : [service]
47
+ services.map(&:to_sym).map{|s| Mcrain.class_for(s)}.each(&:pull_image)
48
+ else
49
+ raise "Unknown action: #{action.inspect}"
50
+ end
37
51
 
38
52
  case action
39
53
  when "start" then
@@ -12,7 +12,17 @@ module Mcrain
12
12
  @server_name ||= self.name.split(/::/).last.underscore.to_sym
13
13
  end
14
14
 
15
- attr_accessor :container_image, :port
15
+ def container_image
16
+ @container_image ||= Mcrain.images[server_name]
17
+ end
18
+ attr_writer :container_image
19
+ attr_accessor :port
20
+
21
+ def pull_image
22
+ Timeout.timeout(10.minutes) do
23
+ LoggerPipe.run(Mcrain.logger, "docker pull #{container_image}")
24
+ end
25
+ end
16
26
  end
17
27
 
18
28
  # @return [Docker::Container]
data/lib/mcrain/mysql.rb CHANGED
@@ -7,7 +7,6 @@ module Mcrain
7
7
  class Mysql < Base
8
8
  self.server_name = :mysql
9
9
 
10
- self.container_image = "mysql:5.5"
11
10
  self.port = 3306
12
11
 
13
12
  def client_require
@@ -7,7 +7,6 @@ module Mcrain
7
7
  class Rabbitmq < Base
8
8
  self.server_name = :rabbitmq
9
9
 
10
- self.container_image = "rabbitmq:3.4.4-management"
11
10
  self.port = 15672
12
11
 
13
12
  def build_docker_options
data/lib/mcrain/redis.rb CHANGED
@@ -7,7 +7,6 @@ module Mcrain
7
7
  class Redis < Base
8
8
  self.server_name = :redis
9
9
 
10
- self.container_image = "redis:2.8.19"
11
10
  self.port = 6379
12
11
 
13
12
  def client_require
data/lib/mcrain/riak.rb CHANGED
@@ -9,8 +9,6 @@ module Mcrain
9
9
 
10
10
  self.server_name = :riak
11
11
 
12
- self.container_image = "hectcastro/riak"
13
-
14
12
  attr_accessor :automatic_clustering
15
13
  attr_writer :cluster_size, :backend
16
14
  def cluster_size
@@ -1,3 +1,3 @@
1
1
  module Mcrain
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/mcrain.rb CHANGED
@@ -8,6 +8,7 @@ require 'logger_pipe'
8
8
  require 'active_support/inflector/inflections'
9
9
  require 'active_support/core_ext/class/subclasses'
10
10
  require 'active_support/core_ext/object/blank'
11
+ require 'active_support/core_ext/numeric/time'
11
12
 
12
13
  module Mcrain
13
14
  class << self
@@ -45,13 +46,17 @@ module Mcrain
45
46
  @instances ||= {}
46
47
  end
47
48
 
48
- def pull_images
49
- Mcrain::Base.descendants.each do |klass|
50
- Timeout.timeout(10.minutes) do
51
- LoggerPipe.run(logger, "docker pull #{klass.container_image}")
52
- end
53
- end
49
+ DEFAULT_IMAGES = {
50
+ mysql: "mysql:5.5",
51
+ redis: "redis:2.8.19",
52
+ rabbitmq: "rabbitmq:3.4.4-management",
53
+ riak: "hectcastro/riak",
54
+ }.freeze
55
+
56
+ def images
57
+ @images ||= DEFAULT_IMAGES.dup
54
58
  end
59
+ attr_writer :images
55
60
 
56
61
  attr_writer :logger
57
62
  def logger
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mcrain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - akm
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-30 00:00:00.000000000 Z
11
+ date: 2015-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logger_pipe