mcrain 0.7.3 → 0.8.0

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: 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