Skip to content

Resolving FQDN for hostname params #17

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# IntelliJ project info
.idea
*.iml
cassandra-web-0.4.1.gem
18 changes: 18 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
language: ruby
cache: bundler

rvm:
- 2.4.1

script:
- gem build cassandra-web.gemspec
- docker build . --no-cache -f Dockerfile -t $DOCKER_HUB_IMAGE
- docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
- docker push $DOCKER_HUB_IMAGE

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=
17 changes: 17 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM ruby:2.4.1

LABEL mantainer="[email protected]" \
app.name="cassandra-web" \
version="0.4.1"

COPY cassandra-web-*.gem /
COPY entrypoint.sh /

RUN \
gem install $(ls /cassandra-web-*.gem) && \
chmod a+x /entrypoint.sh && \
rm -f cassandra-web-*.gem

EXPOSE 3000

ENTRYPOINT ["/entrypoint.sh"]
44 changes: 0 additions & 44 deletions Gemfile.lock

This file was deleted.

8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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...

21 changes: 20 additions & 1 deletion bin/cassandra-web
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
require 'optparse'
require 'logger'
require 'thread'
require "resolv"



class CLI
module Helpers
Expand All @@ -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')
Expand All @@ -40,6 +43,10 @@ class CLI
end

def run(argv)

log = Logger.new(STDOUT)
log.level = Logger::INFO

@parser.parse!(argv)

require 'thin'
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions cassandra-web.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -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 = ['[email protected]']
s.homepage = 'https://github.com/avalanche123/cassandra-web'
Expand All @@ -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'
Expand Down
36 changes: 36 additions & 0 deletions entrypoint.sh
Original file line number Diff line number Diff line change
@@ -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