Class: SwarmClusterCliOpe::Node
- Inherits:
-
Object
- Object
- SwarmClusterCliOpe::Node
- Includes:
- LoggerConcern
- Defined in:
- lib/swarm_cluster_cli_ope/node.rb
Instance Attribute Summary collapse
-
#connection_uri ⇒ String
Nome da utilizzare nella parte DOCKER_HOST=CONNECTION_URI.
-
#name ⇒ String
Nome del nodo.
Class Method Summary collapse
-
.info(connection_uri) ⇒ Object
Ritorna le info base di un nodo.
Instance Method Summary collapse
-
#hostname ⇒ String
connection_uri senza la parte del protocollo.
-
#id ⇒ String
ID univoco del nodo.
-
#info ⇒ OpenStruct
Info del nodo da parte di docker.
-
#initialize(name: nil, connection_uri: nil) ⇒ Node
constructor
A new instance of Node.
-
#is_over_ssh_uri? ⇒ Boolean
Mi definisce se la connessione che stiamo facendo con questo nodo, la facciamo tramite SSH oppure è locale.
-
#manager? ⇒ TrueClass, FalseClass
Controlla se questo nodo è un manager.
Methods included from LoggerConcern
Constructor Details
#initialize(name: nil, connection_uri: nil) ⇒ Node
Returns a new instance of Node.
15 16 17 18 |
# 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 |
Instance Attribute Details
#connection_uri ⇒ String
Returns nome da utilizzare nella parte DOCKER_HOST=CONNECTION_URI.
10 11 12 |
# File 'lib/swarm_cluster_cli_ope/node.rb', line 10 def connection_uri @connection_uri end |
#name ⇒ String
Returns nome del nodo.
8 9 10 |
# File 'lib/swarm_cluster_cli_ope/node.rb', line 8 def name @name end |
Class Method Details
.info(connection_uri) ⇒ Object
Ritorna le info base di un nodo
69 70 71 72 73 74 75 76 |
# 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 |
Instance Method Details
#hostname ⇒ String
connection_uri senza la parte del protocollo
29 30 31 |
# File 'lib/swarm_cluster_cli_ope/node.rb', line 29 def hostname URI(connection_uri).host end |
#id ⇒ String
ID univoco del nodo
44 45 46 |
# File 'lib/swarm_cluster_cli_ope/node.rb', line 44 def id info.Swarm.NodeID end |
#info ⇒ OpenStruct
Info del nodo da parte di docker
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# 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? ⇒ Boolean
Mi definisce se la connessione che stiamo facendo con questo nodo, la facciamo tramite SSH oppure è locale
22 23 24 |
# File 'lib/swarm_cluster_cli_ope/node.rb', line 22 def is_over_ssh_uri? connection_uri.match?(/\Assh\:/) end |
#manager? ⇒ TrueClass, FalseClass
Controlla se questo nodo è un manager
37 38 39 |
# File 'lib/swarm_cluster_cli_ope/node.rb', line 37 def manager? info.Swarm["RemoteManagers"].collect { |n| n["NodeID"] }.include?(info.Swarm["NodeID"]) end |