From 3e672e8b968b42159014c3d7399e2db12db92cea Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 11:41:36 +0100 Subject: [PATCH 01/13] travis build file --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 559a4d4..8ef7bcb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - cassandra-web (0.3.0) + cassandra-web (0.4.1) cassandra-driver (~> 1.1) lz4-ruby (~> 0.3) rack-cors (~> 0.2) From 75c717e8383bdac0c5baf43525b1d32504c6a986 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 11:45:08 +0100 Subject: [PATCH 02/13] travis build file --- .travis.yaml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .travis.yaml diff --git a/.travis.yaml b/.travis.yaml new file mode 100644 index 0000000..e12bb0d --- /dev/null +++ b/.travis.yaml @@ -0,0 +1,2 @@ +language: ruby + From 62421f78b01f75ca843a991c62497523721ee475 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 11:50:32 +0100 Subject: [PATCH 03/13] fix filename --- .travis.yaml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .travis.yaml diff --git a/.travis.yaml b/.travis.yaml deleted file mode 100644 index e12bb0d..0000000 --- a/.travis.yaml +++ /dev/null @@ -1,2 +0,0 @@ -language: ruby - From 0a8e0c3ec333364df34e011df92676a5f47c044e Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 11:51:28 +0100 Subject: [PATCH 04/13] fix filename --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..e12bb0d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,2 @@ +language: ruby + From 0cce2c5f32ece5d244edbffa8d614d746bddfe38 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 12:04:09 +0100 Subject: [PATCH 05/13] removed gemfile lock to be managed by travis --- .travis.yml | 7 +++++++ Gemfile.lock | 44 ------------------------------------------- cassandra-web.gemspec | 2 +- 3 files changed, 8 insertions(+), 45 deletions(-) delete mode 100644 Gemfile.lock diff --git a/.travis.yml b/.travis.yml index e12bb0d..89b096a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,2 +1,9 @@ language: ruby +cache: bundler +rvm: + - 2.4.1 + +before_install: + - gem update --system + - gem install bundler diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 8ef7bcb..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,44 +0,0 @@ -PATH - remote: . - specs: - cassandra-web (0.4.1) - cassandra-driver (~> 1.1) - lz4-ruby (~> 0.3) - rack-cors (~> 0.2) - rack-parser (~> 0.6) - sinatra (~> 1.4) - thin (~> 1.6) - -GEM - remote: https://rubygems.org/ - specs: - cassandra-driver (1.1.0) - ione (~> 1.2) - daemons (1.1.9) - eventmachine (1.0.3) - ione (1.2.0) - lz4-ruby (0.3.3) - rack (1.5.2) - rack-cors (0.2.9) - rack-parser (0.6.1) - rack - rack-protection (1.5.3) - rack - rake (10.4.2) - sinatra (1.4.5) - rack (~> 1.4) - rack-protection (~> 1.4) - tilt (~> 1.3, >= 1.3.4) - thin (1.6.3) - daemons (~> 1.0, >= 1.0.9) - eventmachine (~> 1.0) - rack (~> 1.0) - tilt (1.4.1) - -PLATFORMS - ruby - -DEPENDENCIES - bundler (~> 1.6) - cassandra-web! - rake (~> 10.0) diff --git a/cassandra-web.gemspec b/cassandra-web.gemspec index 818a54a..db9f218 100644 --- a/cassandra-web.gemspec +++ b/cassandra-web.gemspec @@ -4,7 +4,7 @@ $: << File.expand_path('../lib', __FILE__) Gem::Specification.new do |s| s.name = 'cassandra-web' - s.version = '0.4.0' + s.version = '0.4.1' s.authors = ['Bulat Shakirzyanov'] s.email = ['bulat.shakirzyanov@datastax.com'] s.homepage = 'https://github.com/avalanche123/cassandra-web' From d01e32b21f7fd061c4a431f3bda44bdcbc5eb2cf Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 12:08:25 +0100 Subject: [PATCH 06/13] manage travis file --- .travis.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 89b096a..da9d21d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,3 @@ cache: bundler rvm: - 2.4.1 - -before_install: - - gem update --system - - gem install bundler From 2b8e09954e691a3b20b0ff4f2270d3e105899286 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 12:14:23 +0100 Subject: [PATCH 07/13] manage travis file --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index da9d21d..d7aeb3d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,3 +3,6 @@ cache: bundler rvm: - 2.4.1 + +script: + gem build cassandra-web.gemspec \ No newline at end of file From f7920b691a9f73975a424b03a0b4387445501903 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 14:10:22 +0000 Subject: [PATCH 08/13] add docker hub build --- .travis.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d7aeb3d..50309c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,17 @@ language: ruby cache: bundler rvm: - - 2.4.1 +- 2.4.1 script: - gem build cassandra-web.gemspec \ No newline at end of file + gem build cassandra-web.gemspec + docker build . -f Dockerfile -t aroundthecode/cassandra-web:latest + docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD + docker push aroundthecode/cassandra-web:latest + +env: + global: + + - secure: rHC8IbuTqcV0i01Ua0u7xCy5Yx+8DaZXPNpHScPRTMCRZJQS8Se6E5eLgulXtJLd0G5QGsM3yu7TIEeSlughUAuykf/i2b1BIUDx3swIDa81bAbzkNeTwPRCSDpJ150tsabOO941MZWjLRT9YBm6m6rhLj97Wd3/Rv5SHbRvvQAMxMDQT6ciBNX7/a2p0pzcarSZUF/EziSYV/0mqk6eYioWrpNG+6iBwAom3CgMnLqsj/aDumtOKSPWvIDGtUvG73Mbju3Y6m8EKIAt5UZicHCcY+0VRynvtvq7E42NCg1Z3FoAGmELrL0iubp5jXF/ojmWXA+hdACkutND7dDlTn0gqUpkJoEN8qpDXnMLpemCO2VWYlU09m0Mt3nsHhQjyLX1i6voLWNKY7fTBFiLoYr6IfVuCdE5sFMuCe3MRNXFzOKec5WtWKF7WX2SoNhpJa5bhpqMdCfC1wIPcoPyuPGIR5EUdJhrgp6vfa8lfqoL/2PKLe0ZqzwEjwtpWz7clauUfujQT2z98KLVEFQdsYi8oA0Ynt0wL1YJgFlunCQ/oyBvXMyObsFO5iwiDgXe6uGsJevXEmwzmyJ9/kikLuEmY0hbG4ZSOBuOjmaEIejBqNXAVjHbtEYLI3nu+e0nGVglH2ftwrl3/Kv0Raxk0APjJlqzKS2dpYwyk+VQjl8= + + - secure: Onnz87Em+X8qJlGJuxmY9hR27hig3+RNYv9nIXHLgMfLlI9WrGAl8pi7Sgy8mA9ysh2WrPbCeP4NOOEczY0ejhQ00cvDOeSPFxZYyQZtp6G2ZBsQ+kCJQNB83U2+gHAqCuVJWOgDo0o3D+AbbY6QGuSqbqKy3C8agyWQ9EAfll4/qGOkjxPOZriFFq7ZQ5YwFVzt2l2Bc5quJEgIDjvSvkLOM19sXa296L/9kOkw1f7MI+U0ULkFqws8gtM53KY6SsSEf+ZRPbDb84/rrGmZyq2A3F6nZi9qlB5kQedybAvw4qQRq8OwMx9FsrrOoD7aSuo76tUI+MAXRqN2XYJ/kY6V8ivfPpZcGEXZkQ9k+/QHE9rPMuPCewsDv1Wc1fXSZ209hP+svR9643qjYL+PkfFuohgmBHwmdlXgEME+SBKmm1PEI5TcP7zP7RnrF2N5GtOoBX3vzgQul3X9HC09+HwnCc80JWjMLXmVMf6BAxuudlV9A5oo3fC/MEWOYhMXzpllrqeMpRsw/H1mFqAln1LlUIy75q7iYb9vdgIuDknlhHI/yqUTEUZSB72FxMBCkSUWvgr6DhR3WdFzAKpR4w9564xXwzHnN6O5aTWwypSz6ogMk5vCNS6G/fKTWsuQjANSJV6gW6+ep2N0uoMOaRF+dNBlif/q+996RNfdWNs= From 79ae65c40fba17f589f67cbbdd18e4c009387d00 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 15:21:15 +0100 Subject: [PATCH 09/13] Dockerfile --- .travis.yml | 8 ++++---- Dockerfile | 17 +++++++++++++++++ entrypoint.sh | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100644 entrypoint.sh diff --git a/.travis.yml b/.travis.yml index 50309c6..20dba25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,10 @@ rvm: - 2.4.1 script: - gem build cassandra-web.gemspec - docker build . -f Dockerfile -t aroundthecode/cassandra-web:latest - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD - docker push aroundthecode/cassandra-web:latest + - gem build cassandra-web.gemspec + - docker build . -f Dockerfile -t aroundthecode/cassandra-web:latest + - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD + - docker push aroundthecode/cassandra-web:latest env: global: diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..876f2d4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM ruby:2.4.1 + +LABEL mantainer="michele.sacchetti@aroundthecode.org" \ + app.name="cassandra-web" \ + version="0.4.1" + +ADD cassandra-web-*.gem / +ADD entrypoint.sh / + +RUN \ + gem install cassandra-web && \ + chmod a+x /entrypoint.sh \ + rm -f cassandra-web-*.gem + +EXPOSE 3000 + +ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..3a6a34d --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,36 @@ +#!/bin/bash +set -eu + +#HOST IP +if [[ ! -v CASSANDRA_HOST_IP ]]; then + CASSANDRA_HOST_IP="127.0.0.1" +else + HOST_IP="${CASSANDRA_HOST_IP}" +fi + +#PORT +if [[ ! -v CASSANDRA_PORT ]]; then + CASSANDRA_PORT="9042" +else + CASSANDRA_PORT="${CASSANDRA_PORT}" +fi + +#USERNAME +if [[ ! -v CASSANDRA_USERNAME ]]; then + CASSANDRA_USERNAME="cassandra" +else + CASSANDRA_USERNAME="${CASSANDRA_USERNAME}" +fi + +#PASSWORD +if [[ ! -v CASSANDRA_PASSOWRD ]]; then + CASSANDRA_PASSOWRD="cassandra" +else + CASSANDRA_PASSOWRD="${CASSANDRA_PASSOWRD}" +fi + +COMMAND="cassandra-web --hosts $CASSANDRA_HOST_IP --port $CASSANDRA_PORT --username $CASSANDRA_USERNAME --password $CASSANDRA_PASSOWRD" + +echo $COMMAND + +exec $COMMAND \ No newline at end of file From c9b03132d48cf966d380b3d1666c70f8971d58e5 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sat, 16 Feb 2019 15:26:43 +0100 Subject: [PATCH 10/13] fix Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 876f2d4..7674ca6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ ADD entrypoint.sh / RUN \ gem install cassandra-web && \ - chmod a+x /entrypoint.sh \ + chmod a+x /entrypoint.sh && \ rm -f cassandra-web-*.gem EXPOSE 3000 From b5dedfac76b96b94a989282a9264a1399228c712 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sun, 17 Feb 2019 22:29:49 +0100 Subject: [PATCH 11/13] Host paramters can how handle also FQDN, not only IPs --- .gitignore | 1 + .travis.yml | 2 +- Dockerfile | 6 +++--- README.md | 8 ++++++++ bin/cassandra-web | 21 ++++++++++++++++++++- 5 files changed, 33 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 2033023..cd9a23a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ # IntelliJ project info .idea *.iml +cassandra-web-0.4.1.gem diff --git a/.travis.yml b/.travis.yml index 20dba25..7599236 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ rvm: script: - gem build cassandra-web.gemspec - - docker build . -f Dockerfile -t aroundthecode/cassandra-web:latest + - docker build . --no-cache -f Dockerfile -t aroundthecode/cassandra-web:latest - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD - docker push aroundthecode/cassandra-web:latest diff --git a/Dockerfile b/Dockerfile index 7674ca6..cbc8a72 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,11 +4,11 @@ LABEL mantainer="michele.sacchetti@aroundthecode.org" \ app.name="cassandra-web" \ version="0.4.1" -ADD cassandra-web-*.gem / -ADD entrypoint.sh / +COPY cassandra-web-*.gem / +COPY entrypoint.sh / RUN \ - gem install cassandra-web && \ + gem install $(ls /cassandra-web-*.gem) && \ chmod a+x /entrypoint.sh && \ rm -f cassandra-web-*.gem diff --git a/README.md b/README.md index 558ec61..012414c 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,13 @@ A web interface to Apache Cassandra with AngularJS and server-sent events. +## Fork from base repository + +Main changes: + +* host parameter can now resolve also fqdn and not only IPs (resolution will occur only once at options loading) +* Travis CI build + docker container integration + ## Installation ```bash @@ -62,3 +69,4 @@ Cassandra web is possible because of the following awesome technologies (in no p * [PrismJS](http://prismjs.com/) * [CodeMirror](http://codemirror.net/) * and many others... + diff --git a/bin/cassandra-web b/bin/cassandra-web index 7f1c7cf..c433517 100755 --- a/bin/cassandra-web +++ b/bin/cassandra-web @@ -3,6 +3,9 @@ require 'optparse' require 'logger' require 'thread' +require "resolv" + + class CLI module Helpers @@ -25,7 +28,7 @@ class CLI } option(:bind, '-B', '--bind BIND', String, 'ip:port or path for cassandra web to bind on (default: 0.0.0.0:3000)') - option(:hosts, '-H', '--hosts HOSTS', String, 'coma-separated list of cassandra hosts (default: 127.0.0.1)') + option(:hosts, '-H', '--hosts HOSTS', String, 'comma-separated list of cassandra hosts (default: 127.0.0.1)') option(:port, '-P', '--port PORT', Integer, 'integer port that cassandra is running on (default: 9042)') option(:log_level, '-L', '--log-level LEVEL', String, 'log level (default: info)') option(:username, '-u', '--username USER', String, 'username to use when connecting to cassandra') @@ -40,6 +43,10 @@ class CLI end def run(argv) + + log = Logger.new(STDOUT) + log.level = Logger::INFO + @parser.parse!(argv) require 'thin' @@ -71,6 +78,18 @@ class CLI hosts = Array(options[:hosts]) hosts << '127.0.0.1' if hosts.empty? + hosts.each_index do |i| + hosts[i] = "green" if hosts[i] == "red" + if hosts[i] =~ Resolv::IPv4::Regex ? true : false + log.info(hosts[i] + " is a regulal ip going on") + else + log.warn("considering "+ hosts[i] + " a fqdn, resolving...") + resolved = Resolv.getaddress(hosts[i]) + log.warn(resolved) + hosts[i] = resolved + end + end + options[:load_balancing_policy] = ::Cassandra::LoadBalancing::Policies::WhiteList.new(hosts, ::Cassandra::LoadBalancing::Policies::RoundRobin.new) options[:compression] = :lz4 options[:page_size] = nil From 07fafbaf99728ad8bd784a24e2392b723e796fa4 Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Sun, 17 Feb 2019 22:37:07 +0100 Subject: [PATCH 12/13] externaize docker hub image name --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7599236..68e912c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,9 +6,9 @@ rvm: script: - gem build cassandra-web.gemspec - - docker build . --no-cache -f Dockerfile -t aroundthecode/cassandra-web:latest + - docker build . --no-cache -f Dockerfile -t $DOCKER_HUB_IMAGE - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD - - docker push aroundthecode/cassandra-web:latest + - docker push $DOCKER_HUB_IMAGE env: global: From dc3518bea79bc550a9ce3983a03cf37b4b6f873f Mon Sep 17 00:00:00 2001 From: Michele Sacchetti Date: Tue, 5 Mar 2019 18:58:13 +0100 Subject: [PATCH 13/13] Update cassandra-web.gemspec --- cassandra-web.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cassandra-web.gemspec b/cassandra-web.gemspec index db9f218..32273d2 100644 --- a/cassandra-web.gemspec +++ b/cassandra-web.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |s| s.required_ruby_version = '>= 1.9.3' - s.add_runtime_dependency 'cassandra-driver', '~> 3.1' + s.add_runtime_dependency 'cassandra-driver', '~> 3.2.3' s.add_runtime_dependency 'thin', '~> 1.6' s.add_runtime_dependency 'rack-cors', '~> 0.2' s.add_runtime_dependency 'rack-parser', '~> 0.6'