mcrain 0.7.3 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e81bfac8bb58900a70df34d2c27e79ad600e2969
4
- data.tar.gz: c63154c3050a2e0307f1b872a09ef4c36a9dd946
3
+ metadata.gz: 7d18a6937f4e154940146b53cfc657da38171ae8
4
+ data.tar.gz: 99137cb4d00e234344ec07d7a416c53e8bffbc72
5
5
  SHA512:
6
- metadata.gz: bef8b1dafdcbdb38bee4e91c01a0aa7b3a63662894a1c4eca270a45331cb479f7b4d4ed49bc37a0ed5d16f82b8e26640b97df99d77f4a8479b5fa544fdf32dc7
7
- data.tar.gz: fa41ced5e00303e01899172f3ef225aca69569703a3f524d630315010726e73075404e32b0b087f38a96df8e0db453066042524ef3a8ce773cdace9b1874ffc1
6
+ metadata.gz: 751aca2467b0b5f0745365d794a59680cb44496a0d45acee57271ed8a2f5e65dba1be45ea5e882b253d070efc238d4509bdb9b3d614681e5ce2bca64b3270892
7
+ data.tar.gz: 75b30cc1936edad4252ee829a1ac9d5f619c922f00e092da5b9bb78ae0f69b864e56ed157779a6545c689a233d18cffcbf724f83f821cd7b9c3f418538a67fb4
@@ -0,0 +1,50 @@
1
+ version: 2
2
+ jobs:
3
+ build:
4
+ working_directory: ~/mcrain
5
+
6
+ ## see https://circleci.com/docs/2.0/executor-types/#machine-executor-overview
7
+ machine: true
8
+
9
+ steps:
10
+ - checkout
11
+
12
+ - run:
13
+ name: Check docker version
14
+ command: |
15
+ set -x
16
+ docker version
17
+ docker info
18
+
19
+ - run:
20
+ name: Check ruby version
21
+ command: |
22
+ set -x
23
+ rvm version
24
+ rvm list
25
+ ruby -v
26
+ gem --version
27
+ gem env
28
+ bundle --version
29
+
30
+ - run:
31
+ name: Open docker TCP port
32
+ command: |
33
+ set -x
34
+ echo 'DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' | sudo tee -a /etc/default/docker
35
+ sudo service docker restart
36
+
37
+ - run: docker pull mysql:5.5
38
+ - run: docker pull redis:2.8.19
39
+ - run: docker pull rabbitmq:3.4.4-management
40
+ - run: docker pull hectcastro/riak:latest
41
+
42
+ - run: bundle install --jobs=4 --path=vendor/bundle
43
+
44
+ - run:
45
+ name: test
46
+ command: bundle exec rake spec
47
+ environment:
48
+ DOCKER_HOST: tcp://127.0.0.1:2375
49
+
50
+
data/README.md CHANGED
@@ -72,6 +72,38 @@ HBase | N/A | `gem 'hbase-jruby'`
72
72
 
73
73
  ## Usage
74
74
 
75
+ ### configure images
76
+
77
+ ```ruby
78
+ Mcrain.configure do |config|
79
+ config.images[:mysql] = "mysql:5.6"
80
+ config.images[:redis] = "redis:3.2-alpine"
81
+ # config.images[:rabbitmq] = ...
82
+ # config.images[:riak] = ...
83
+ # config.images[:hbase] = ...
84
+ end
85
+ ```
86
+
87
+ Or put `.mcrain.yml` file with following content
88
+
89
+ ```yaml
90
+ ---
91
+ images:
92
+ mysql: "mysql:5.6"
93
+ redis: "redis:3.2-alpine"
94
+ # rabbitmq: ...
95
+ # riak: ...
96
+ # hbase: ...
97
+ ```
98
+
99
+ and load it by `Mcrain.load_config`:
100
+
101
+ ```ruby
102
+ Mcrain.load_config "/path/to/.mcrain.yml"
103
+ ```
104
+
105
+ `mcrain` command accepts `-c` (`--config`) option to configure images by yaml file, and its default is `.mcrain.yml`.
106
+
75
107
  ### redis in code
76
108
 
77
109
  ```ruby
data/exe/mcrain CHANGED
@@ -2,12 +2,16 @@
2
2
  # coding: utf-8
3
3
 
4
4
  require "mcrain"
5
+ require "optparse"
5
6
 
6
- action, service, *args = *ARGV
7
- verbose = ARGV.include?('-V') || ARGV.include?('--verbose')
8
- if action.nil? || service.nil?
9
- $stderr.puts(<<MESSAGE)
10
- #{$PROGRAM_NAME} <action> <service> [n] [-v or --verbose]
7
+ opts = {
8
+ verbose: false,
9
+ config_file: ".mcrain.yml"
10
+ }
11
+
12
+ ARGV.options do |q|
13
+ q.banner = <<MESSAGE
14
+ #{q.program_name} <action> <service> [n] [options]
11
15
  actions: start, stop or pull
12
16
 
13
17
  start:
@@ -19,16 +23,32 @@ if action.nil? || service.nil?
19
23
 
20
24
  pull:
21
25
  service: redis, rabbitmq, mysql, riak or all
26
+
27
+ [options]
22
28
  MESSAGE
29
+ q.on("-c", "--config=file", "Path to mcrain config file, default: .mcrain.yml"){ |v| opts[:config_file] = v }
30
+ q.on("-V", "--verbose"){ |v| opts[:verbose] = v }
31
+ q.parse!
32
+ end
23
33
 
34
+ action, service, *args = *ARGV
35
+ if action.nil? || service.nil?
36
+ $stderr.puts ARGV.options
24
37
  exit(1)
25
38
  end
26
39
 
27
- unless verbose
40
+ unless opts[:verbose]
28
41
  require 'logger'
29
42
  Mcrain.logger = Logger.new("/dev/null")
30
43
  end
31
44
 
45
+ if opts[:config_file] && File.exist?(opts[:config_file])
46
+ Mcrain.logger.debug "Loading config file from #{opts[:config_file]}"
47
+ Mcrain.load_config opts[:config_file]
48
+ else
49
+ Mcrain.logger.debug "Skipped to load config file"
50
+ end
51
+
32
52
  begin
33
53
  options = {}
34
54
  case service
@@ -64,7 +84,7 @@ begin
64
84
  exit(1)
65
85
  end
66
86
  when "pull" then
67
- services = (service == "all") ? Mcrain.images.keys : [service]
87
+ services = (service == "all") ? Mcrain.configuration.images.keys : [service]
68
88
  services.map(&:to_sym).map{|s| Mcrain.class_for(s)}.each(&:pull_image)
69
89
  else
70
90
  raise "Unknown action: #{action.inspect}"
@@ -0,0 +1,33 @@
1
+ require "mcrain"
2
+ require "yaml"
3
+
4
+ module Mcrain
5
+ class Configuration
6
+ DEFAULT_IMAGES = {
7
+ mysql: "mysql:5.5",
8
+ redis: "redis:2.8.19",
9
+ rabbitmq: "rabbitmq:3.4.4-management",
10
+ riak: "hectcastro/riak",
11
+ hbase: "nerdammer/hbase:latest",
12
+ }.freeze
13
+
14
+ attr_accessor :images
15
+
16
+ def initialize
17
+ @images = DEFAULT_IMAGES.dup
18
+ end
19
+
20
+ class << self
21
+ def load_config(file)
22
+ loaded_config = YAML.load(File.read(file))
23
+ c = self.new
24
+ if loaded_config["images"]
25
+ loaded_config["images"].each do |k,v|
26
+ c.images[k.to_sym] = v
27
+ end
28
+ end
29
+ c
30
+ end
31
+ end
32
+ end
33
+ end
@@ -13,9 +13,9 @@ module Mcrain
13
13
  end
14
14
 
15
15
  def container_image
16
- @container_image ||= Mcrain.images[server_name]
16
+ Mcrain.configuration.images[server_name]
17
17
  end
18
- attr_writer :container_image
18
+
19
19
  attr_accessor :port
20
20
 
21
21
  def pull_image
data/lib/mcrain/riak.rb CHANGED
@@ -33,7 +33,9 @@ module Mcrain
33
33
  class Node
34
34
  include ContainerController
35
35
 
36
- self.container_image = "hectcastro/riak"
36
+ def self.container_image
37
+ Mcrain.configuration.images[:riak]
38
+ end
37
39
 
38
40
  self.port = 8087 # protocol buffer
39
41
  # self.http_port = 8098 # HTTP
@@ -1,3 +1,3 @@
1
1
  module Mcrain
2
- VERSION = "0.7.3"
2
+ VERSION = "0.8.0"
3
3
  end
data/lib/mcrain.rb CHANGED
@@ -31,18 +31,19 @@ module Mcrain
31
31
  class_names[name] = class_name
32
32
  end
33
33
 
34
- DEFAULT_IMAGES = {
35
- mysql: "mysql:5.5",
36
- redis: "redis:2.8.19",
37
- rabbitmq: "rabbitmq:3.4.4-management",
38
- riak: "hectcastro/riak",
39
- hbase: "nerdammer/hbase:latest",
40
- }.freeze
41
-
42
- def images
43
- @images ||= DEFAULT_IMAGES.dup
34
+ def load_config(file)
35
+ @configuration = Mcrain::Configuration.load_config(file)
36
+ end
37
+
38
+ attr_writer :configuration
39
+ def configuration
40
+ @configuration ||= Mcrain::Configuration.new
41
+ end
42
+
43
+ def configure
44
+ yield configuration
45
+ configuration
44
46
  end
45
- attr_writer :images
46
47
 
47
48
  attr_writer :logger
48
49
  def logger
@@ -73,6 +74,7 @@ module Mcrain
73
74
  end
74
75
 
75
76
  autoload :Base, 'mcrain/base'
77
+ autoload :Configuration, 'mcrain/configuration'
76
78
  autoload :DockerMachine, 'mcrain/docker_machine'
77
79
  autoload :ContainerController, 'mcrain/container_controller'
78
80
  autoload :ClientProvider, 'mcrain/client_provider'
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.7.3
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - akm
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-03 00:00:00.000000000 Z
11
+ date: 2017-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logger_pipe
@@ -102,6 +102,7 @@ executables:
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
+ - ".circleci/config.yml"
105
106
  - ".gitignore"
106
107
  - ".gitmodules"
107
108
  - ".rspec"
@@ -112,11 +113,11 @@ files:
112
113
  - Rakefile
113
114
  - bin/console
114
115
  - bin/setup
115
- - circle.yml
116
116
  - exe/mcrain
117
117
  - lib/mcrain.rb
118
118
  - lib/mcrain/base.rb
119
119
  - lib/mcrain/client_provider.rb
120
+ - lib/mcrain/configuration.rb
120
121
  - lib/mcrain/container_controller.rb
121
122
  - lib/mcrain/docker_machine.rb
122
123
  - lib/mcrain/hbase.rb
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
147
  version: '0'
147
148
  requirements: []
148
149
  rubyforge_project:
149
- rubygems_version: 2.6.13
150
+ rubygems_version: 2.5.2.1
150
151
  signing_key:
151
152
  specification_version: 4
152
153
  summary: mcrain supports to run docker container for test.
data/circle.yml DELETED
@@ -1,44 +0,0 @@
1
- machine:
2
- ruby:
3
- version: 2.2.2
4
- services:
5
- - docker
6
-
7
- dependencies:
8
- cache_directories:
9
- - "~/docker"
10
- pre:
11
- - echo 'DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' | sudo tee -a /etc/default/docker
12
- - sudo service docker restart
13
- - gem install bundler --version '~> 1.10.5'
14
- - mkdir -p ~/docker
15
- - if [[ -e ~/docker/mysql.tar ]]; then
16
- docker load -i ~/docker/mysql.tar;
17
- else
18
- docker pull mysql:5.5;
19
- docker save mysql:5.5 > ~/docker/mysql.tar;
20
- fi
21
- - if [[ -e ~/docker/redis.tar ]]; then
22
- docker load -i ~/docker/redis.tar;
23
- else
24
- docker pull redis:2.8.19;
25
- docker save redis:2.8.19 > ~/docker/redis.tar;
26
- fi
27
- - if [[ -e ~/docker/rabbitmq.tar ]]; then
28
- docker load -i ~/docker/rabbitmq.tar;
29
- else
30
- docker pull rabbitmq:3.4.4-management;
31
- docker save rabbitmq:3.4.4-management > ~/docker/rabbitmq.tar;
32
- fi
33
- - if [[ -e ~/docker/riak.tar ]]; then
34
- docker load -i ~/docker/riak.tar;
35
- else
36
- docker pull hectcastro/riak:latest;
37
- docker save hectcastro/riak:latest > ~/docker/riak.tar;
38
- fi
39
-
40
- test:
41
- override:
42
- - bundle exec rake spec:
43
- environment:
44
- DOCKER_HOST: tcp://127.0.0.1:2375