is_master 1.0.0 → 1.1.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: a0ec62958bdb7d1c26270b758a5fe0f945cfb609
4
- data.tar.gz: e180cddb6963fefaf5699b3a9f1abeaa90bf8171
3
+ metadata.gz: 95addbb0d7882dea2b0c89407e2eafcaac273db9
4
+ data.tar.gz: 29930f30a84441d6dd17b07c535c1c3e3fd69b8f
5
5
  SHA512:
6
- metadata.gz: ccdbbf1e23ca2bec16791528eb0d1f2d49d6e1133408fd0cc209da07ecdf92ab36b9e260f788de918b519707f8ab53ba3bdb3bff1e480a87050f376c8eb6051e
7
- data.tar.gz: 4c4b4a58646f499b7ed96b687f8dc65953fe2d8372c0fae3d6dce26e770196f6460da6b879db286eb3167487134bd9d6964b3c5b9110e3238527def0b867c7dd
6
+ metadata.gz: 613d77a498bbaaec34a570cdce9e1c0a7c1962599cf8d13d78c50d7088e09f5fc991d53f9227f5860120b0f90075ffd590519cd962742c758b9238300ba3f468
7
+ data.tar.gz: 7ceb81a73cd6aca6df41351f0fc5be554d24b33d04b5cd2f44c9c22c845e60fcf9a43d9df06f60e5b17c3fd3a85de6dfb7f153364370ade53eb55f9e4401c60c
data/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ # CHANGELOG
2
+ ## 1.1.0 (2017-12-15)
3
+
4
+ * add expected file option
5
+ * add changelog
6
+ * fix copyright in LICENSE file
7
+
8
+ ## 1.0.0 (2017-11-09)
9
+
10
+ * first version
data/LICENSE CHANGED
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright {yyyy} {name of copyright owner}
189
+ Copyright 2017 Adrien Waksberg
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # is_master
2
- [![Version](https://img.shields.io/badge/latest_version-1.0.0-green.svg)](https://github.com/nishiki/is_master/releases)
2
+ [![Version](https://img.shields.io/badge/latest_version-1.1.0-green.svg)](https://github.com/nishiki/is_master/releases)
3
3
  [![Build Status](https://travis-ci.org/nishiki/is_master.svg?branch=master)](https://travis-ci.org/nishiki/is_master)
4
4
  [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://github.com/nishiki/is_master/blob/master/LICENSE)
5
5
 
6
- is_master execute a command when it determine that server is master
6
+ is_master execute a command when on the machine there is the expected vip or file.
7
7
 
8
8
  ## Install
9
9
 
@@ -19,6 +19,10 @@ It's simple:
19
19
  ```
20
20
  is_master 10.0.254.2 ls -l
21
21
  ```
22
+ or
23
+ ```
24
+ is_master /path/to/file ls -l
25
+ ```
22
26
 
23
27
  ## Development
24
28
  ### Test on local machine with docker
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
data/bin/is_master CHANGED
@@ -1,18 +1,36 @@
1
1
  #!/usr/bin/env ruby
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+
2
19
  require 'socket'
3
20
 
4
21
  if ARGV.length < 2
5
22
  puts 'is_master execute a command when it determine that server is master'
6
- puts "Usage: #{$PROGRAM_NAME} VIP COMMAND"
7
- puts ' VIP - IP address expected to be master'
23
+ puts "Usage: #{$PROGRAM_NAME} [VIP|FILE] COMMAND"
24
+ puts ' VIP - IP address expected to be master'
25
+ puts ' FILE - File expected to be master'
8
26
  puts ' COMMAND - Command to execute if host is master'
9
27
  exit 2
10
28
  end
11
29
 
12
- vip = ARGV[0]
13
- command = ARGV[1..-1].join(' ')
30
+ expected = ARGV[0]
31
+ command = ARGV[1..-1].join(' ')
14
32
 
15
- if Socket.ip_address_list.map(&:ip_address).include?(vip)
33
+ if Socket.ip_address_list.map(&:ip_address).include?(expected) || File.exist?(expected)
16
34
  Kernel.exec(command)
17
35
  else
18
36
  puts 'OK - I am slave, i going to sleep'
data/test/test_cli.rb CHANGED
@@ -1,6 +1,14 @@
1
1
  require 'test/unit'
2
2
 
3
3
  class TestCli < Test::Unit::TestCase
4
+ def test_missing_arg
5
+ output = %x(is_master 127.0.0.1)
6
+ assert_match('Usage: ', output)
7
+
8
+ output = %x(is_master)
9
+ assert_match('Usage: ', output)
10
+ end
11
+
4
12
  def test_slave_mode
5
13
  output = %x(is_master 10.255.255.0 echo 'GOOD!')
6
14
  assert_match('I am slave', output)
@@ -10,4 +18,16 @@ class TestCli < Test::Unit::TestCase
10
18
  output = %x(is_master 127.0.0.1 echo 'GOOD!')
11
19
  assert_match('GOOD!', output)
12
20
  end
21
+
22
+ def test_file_slave_mode
23
+ output = %x(is_master /tmp/test.txt echo 'GOOD!')
24
+ assert_match('I am slave', output)
25
+ end
26
+
27
+ def test_file_master_mode
28
+ File.write('/tmp/test.txt', '')
29
+ output = %x(is_master /tmp/test.txt echo 'GOOD!')
30
+ assert_match('GOOD!', output)
31
+ File.unlink('/tmp/test.txt')
32
+ end
13
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: is_master
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrien Waksberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-09 00:00:00.000000000 Z
11
+ date: 2017-12-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -22,6 +22,7 @@ files:
22
22
  - ".gitignore"
23
23
  - ".rubocop.yml"
24
24
  - ".travis.yml"
25
+ - CHANGELOG.md
25
26
  - Dockerfile
26
27
  - Gemfile
27
28
  - LICENSE