Class: Mcrain::Riak::Node

Inherits:
Object
  • Object
show all
Includes:
ContainerController
Defined in:
lib/mcrain/riak.rb

Overview

docker run -e “DOCKER_RIAK_CLUSTER_SIZE=$DOCKER_RIAK_CLUSTER_SIZE” \

-e "DOCKER_RIAK_AUTOMATIC_CLUSTERING=${DOCKER_RIAK_AUTOMATIC_CLUSTERING}" \
-e "DOCKER_RIAK_BACKEND=${DOCKER_RIAK_BACKEND}" \
-p $publish_http_port \
-p $publish_pb_port \
--link "riak01:seed" \
--name "riak${index}" \
-d hectcastro/riak > /dev/null 2>&1

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ContainerController

#add_volume_options, #container, #container_image, #find_portno, #host, included, #info, #ip, #name, #port, #ssh_uri, #url

Constructor Details

#initialize(owner) ⇒ Node

Returns a new instance of Node.



39
40
41
# File 'lib/mcrain/riak.rb', line 39

def initialize(owner)
  @owner = owner
end

Instance Attribute Details

#ownerObject (readonly)

self.http_port = 8098 # HTTP



37
38
39
# File 'lib/mcrain/riak.rb', line 37

def owner
  @owner
end

#primary_nodeObject

Returns the value of attribute primary_node.



38
39
40
# File 'lib/mcrain/riak.rb', line 38

def primary_node
  @primary_node
end

Instance Method Details

#build_docker_optionsObject



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/mcrain/riak.rb', line 47

def build_docker_options
  r = super
  r['HostConfig']['PortBindings']["8098/tcp"] = [{ 'HostPort' => http_port.to_s }]
  envs = []
  envs << "DOCKER_RIAK_CLUSTER_SIZE=#{owner.cluster_size}"
  envs << "DOCKER_RIAK_AUTOMATIC_CLUSTERING=#{owner.automatic_clustering ? 1 : 0}"
  envs << "DOCKER_RIAK_BACKEND=#{owner.backend}"
  r['Env'] = envs unless envs.empty?
  if primary_node
    r['HostConfig']['Links'] = ["#{primary_node.name}:seed"]
  end
  return r
end

#http_portObject



43
44
45
# File 'lib/mcrain/riak.rb', line 43

def http_port
  @http_port ||= find_portno
end

#pingObject



61
62
63
64
65
66
67
68
69
# File 'lib/mcrain/riak.rb', line 61

def ping
  owner.logger.debug("sending a ping http://#{host}:#{http_port}/stats")
  res = Net::HTTP.start(host, http_port) {|http| http.get('/stats') }
  r = res.is_a?(Net::HTTPSuccess)
  owner.logger.debug("#{res.inspect} #=> #{r}")
  return r
rescue => e
  return false
end

#resetObject



71
72
73
74
75
# File 'lib/mcrain/riak.rb', line 71

def reset
  instance_variables.each do |var|
    instance_variable_set(var, nil)
  end
end