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