class SwarmClusterCliOpe::Configuration

Classe per la gestione delle configurazioni, unisce le configurazioni di base alle configurazioni di progetto; le quali sono salvate nel file di configurazione del progetto .swarm_cluster_project sottoforma di json che vengono mergiate sulle configurazioni base

Public Instance Methods

get_node(node) click to toggle source

@return [SwarmClusterCliOpe::Node] @param [String] node nome del nodo

# File lib/swarm_cluster_cli_ope/configuration.rb, line 72
def get_node(node)
  nodes.find { |c| c.name == node }
end
get_node_by_id(node_id) click to toggle source

@return [SwarmClusterCliOpe::Node] @param [String] node_id

# File lib/swarm_cluster_cli_ope/configuration.rb, line 78
def get_node_by_id(node_id)
  nodes.find { |c| c.id == node_id }
end
managers() click to toggle source

Lista di nodi su cui lavorare @return [Array<SwarmClusterCliOpe::Manager>]

# File lib/swarm_cluster_cli_ope/configuration.rb, line 17
def managers
  return @_managers if @_managers
  @_managers = self.nodes.select { |n| read_managers_cache_list.include?(n.name) }.collect { |c| Manager.new(name: c.name.to_s, connection_uri: c.connection_uri) }
end
nodes() click to toggle source

Lista di tutti i nodi del cluster

@return [Array<SwarmClusterCliOpe::Node>]

# File lib/swarm_cluster_cli_ope/configuration.rb, line 44
def nodes
  @_nodes ||= Hash.new do |hash, key|
    hash[key] = self.merged_configurations[:connections_maps].collect { |m, c| Node.new(name: m.to_s, connection_uri: c) }
  end
  @_nodes[environment]
end
nodes=(objs) click to toggle source

Lista di nodi da assegnare alle configurazioni

@param [Array<SwarmClusterCliOpe::Node>] @return [Configuration]

# File lib/swarm_cluster_cli_ope/configuration.rb, line 56
def nodes=(objs)
  nodes[environment] = objs
  self
end
read_managers_cache_list() click to toggle source
# File lib/swarm_cluster_cli_ope/configuration.rb, line 34
def read_managers_cache_list
  # TODO sarebbe da aggiornare ogni tanto, metti che uno non spegne mai il pc
  refresh_managers_cache_list unless File.exists?(swarm_manager_cache_path)
  File.read(swarm_manager_cache_path).split("\n")
end
refresh_managers_cache_list() click to toggle source

Esegue un refresh della lista dei manager, ciclando su tutti i nodi, e scrivendo in /tmp un file temporaneo con con la lista dei nomi dei managers

# File lib/swarm_cluster_cli_ope/configuration.rb, line 25
def refresh_managers_cache_list
  list = self.nodes.select(&:manager?).collect { |c| Manager.new(name: c.name, connection_uri: c.connection_uri) }
  File.open(swarm_manager_cache_path, "w") do |f|
    list.collect(&:name).each do |name|
      f.puts(name)
    end
  end
end
save_base_cfgs() click to toggle source

Salva le configurazioni base in HOME

# File lib/swarm_cluster_cli_ope/configuration.rb, line 63
def save_base_cfgs
  super do |obj|
    obj.merge({connections_maps: nodes.collect { |k| [k.name, k.connection_uri] }.to_h})
  end
end

Private Instance Methods

evaluate_correct_command_usage(configuration) click to toggle source
# File lib/swarm_cluster_cli_ope/configuration.rb, line 86
def evaluate_correct_command_usage(configuration)

  if configuration[:connections_maps].keys.include?(:context)
    puts "ATTENZIONE, I COMANDI DEVONO ESSERE LANCIATI DAL SUB COMANDO K8S"
    exit
  end

end
swarm_manager_cache_path() click to toggle source

Path al file dove salviamo la cache dei managers, ha un TTL legato all'orario (anno-mese-giorno-ora) quindi ogni ora si autoripulisce e con un md5 delle configurazioni di base @return [String]

# File lib/swarm_cluster_cli_ope/configuration.rb, line 100
def swarm_manager_cache_path
  md5 = Digest::MD5.hexdigest(self.merged_configurations.to_json)
  file_name = Time.now.strftime(".swarm_cluster_cli_manager_cache-%Y%m%d%H-#{md5}")
  File.join("/tmp", file_name)
end