class SwarmClusterCliOpe::Node

Attributes

connection_uri[RW]

@return [String] nome da utilizzare nella parte DOCKER_HOST=CONNECTION_URI

name[RW]

@return [String] nome del nodo

Public Class Methods

info(connection_uri) click to toggle source

Ritorna le info base di un nodo

# File lib/swarm_cluster_cli_ope/node.rb, line 69
def self.info(connection_uri)
  command = Commands::Base.new
  command.docker_host = "DOCKER_HOST=#{connection_uri}"
  result = command.command do |cmd|
    cmd.add("info")
  end.execute.result.first
  result
end
new(name: nil, connection_uri: nil) click to toggle source

@param [String] name @param [String] connection_uri

# File lib/swarm_cluster_cli_ope/node.rb, line 15
def initialize(name: nil, connection_uri: nil)
  @name = name
  @connection_uri = connection_uri || name
end

Public Instance Methods

hostname() click to toggle source

connection_uri senza la parte del protocollo @return [String]

# File lib/swarm_cluster_cli_ope/node.rb, line 29
def hostname
  URI(connection_uri).host
end
id() click to toggle source

ID univoco del nodo @return [String]

# File lib/swarm_cluster_cli_ope/node.rb, line 44
def id
  info.Swarm.NodeID
end
info() click to toggle source

Info del nodo da parte di docker @return [OpenStruct]

# File lib/swarm_cluster_cli_ope/node.rb, line 51
def info
  # path al file di cache
  path = Time.now.strftime("/tmp/.swarm_cluster_cli_info_cache_#{name}-%Y%m%d%H")
  if File.exist?(path)
    i = JSON.parse(File.read(path), object_class: OpenStruct)
  else
    i = Node.info(connection_uri)
    #mi salvo in cache le info scaricate
    File.open(path, "w") do |f|
      f.write(i.to_h.to_json)
    end
  end

  i
end
is_over_ssh_uri?() click to toggle source

Mi definisce se la connessione che stiamo facendo con questo nodo, la facciamo tramite SSH oppure è locale

# File lib/swarm_cluster_cli_ope/node.rb, line 22
def is_over_ssh_uri?
  connection_uri.match?(/\Assh\:/)
end
manager?() click to toggle source

Controlla se questo nodo è un manager @return [TrueClass,FalseClass]

# File lib/swarm_cluster_cli_ope/node.rb, line 37
def manager?
  info.Swarm["RemoteManagers"].collect { |n| n["NodeID"] }.include?(info.Swarm["NodeID"])
end