mcrain 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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