class SwarmClusterCliOpe::BaseConfiguration

Classe Base delle configurazioni, utilizzabile per swarm e kubernetes

Constants

NoBaseConfigurations

Attributes

environment[RW]

@return [String] in che enviroment siamo, altrimenti siamo nel default

stack_name[RW]

@return [String] nome dello stack con cui lavoriamo

Public Class Methods

base_cfg_path() click to toggle source

@return [String] path to base home configurations

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 72
def self.base_cfg_path
  File.join(ENV['HOME'], '.swarm_cluster', 'config.json')
end
exist_base?() click to toggle source

Controlla se esiste il file di configurazione base, nella home dell'utente

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 66
def self.exist_base?
  File.exist?(base_cfg_path)
end

Private Class Methods

cfgs_project_file_name(with_env: nil) click to toggle source

nome del file in cui salvare le configurazioni di progetto @return [String] @param [nil|String] with_env nome dell'env da cercare

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 197
def self.cfgs_project_file_name(with_env: nil)
  ".swarm_cluster_project#{with_env ? ".#{with_env}" : ""}"
end
read_base() click to toggle source

Legge le configurazioni base

@return [Hash]

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 205
def self.read_base
  raise NoBaseConfigurations if !exist_base? or File.size(self.base_cfg_path)==0
  JSON.parse(File.read(self.base_cfg_path)).deep_symbolize_keys
end

Public Instance Methods

development_mode?() click to toggle source

Siamo in sviluppo? @return [TrueClass, FalseClass]

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 59
def development_mode?
  return false unless self.class.exist_base?
  merged_configurations.key?(:dev_mode)
end
env(enviroment = nil) { |self| ... } click to toggle source

Serve per entrare nell'env corretto. passando l'env, tutto quello eseguito nello yield sarà gestito in quell'env. Verrà controllato quindi che esista il relativo file di configurazion

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 20
def env(enviroment = nil)
  unless enviroment.nil?
    @environment = enviroment.to_s.to_sym
  end
  logger.info { "ENV: #{@environment ? @environment : "BASE"}" }
  yield self
  @environment = nil
end
get_syncro(name) click to toggle source

Funzione per la restituzione della classe di sincro corretta @return [Class<SwarmClusterCliOpe::SyncConfigs::PostGres>, Class<SwarmClusterCliOpe::SyncConfigs::Mysql>, Class<SwarmClusterCliOpe::SyncConfigs::Rsync>, Class<SwarmClusterCliOpe::SyncConfigs::Sqlite3>, nil]

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 95
def get_syncro(name)
  case name
  when 'sqlite3'
    SyncConfigs::Sqlite3
  when 'rsync'
    SyncConfigs::Rsync
  when 'mysql'
    SyncConfigs::Mysql
  when 'pg'
    SyncConfigs::PostGres
  when 'mongodb'
    SyncConfigs::MongoDb
  else
    logger.error { "CONFIGURAIONE NON PREVISTA: #{name}" }
    nil
  end
end
local_compose_project_name() click to toggle source

Indica il nome del progetto locale compose, quella parte di nome che viene attaccata in fronte ad ogni nome di servizio locale, e che come default è il nome della cartella in cui risiede il docker-compose.yml file @return [String]

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 182
def local_compose_project_name
  File.basename(FileUtils.pwd).downcase
end
logger_level() click to toggle source

Livello di logging @return [Integer]

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 48
def logger_level
  merged_configurations[:log_level].to_s || "0"
rescue SwarmClusterCliOpe::Configuration::NoBaseConfigurations
  # quando andiamo in errore durante l'installazione per avere le informazioni per il logger.
  # Usiamo lo standard
  "0"
end
merged_configurations() click to toggle source
Cerca le configurazioni di progetto e le mergia se sono presenti

@return [Hash]

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 115
def merged_configurations
  return @_merged_configurations[@environment] if @_merged_configurations

  @_merged_configurations = Hash.new do |hash, key|
    folder = FileUtils.pwd
    default_file = looped_file(folder, self.class.cfgs_project_file_name)
    enviroment_file = looped_file(folder, self.class.cfgs_project_file_name(with_env: key))

    project_cfgs = {}
    unless default_file.nil?
      project_cfgs = JSON.parse(File.read(default_file)).deep_symbolize_keys
    end

    unless enviroment_file.nil?
      project_cfgs.merge!(JSON.parse(File.read(enviroment_file)).deep_symbolize_keys)
    end

    hash[key] = self.class.read_base.merge(project_cfgs)
  end

  configuration_version = @_merged_configurations[@environment][:version]
  if Gem::Version.new(configuration_version) > Gem::Version.new(VERSION)
    puts "WARNING: Versione del file di configurazione [#{configuration_version}] più aggiornata della gemma [#{VERSION}], eseguire upgrade
          gem update swarm_cluster_cli_ope"
    exit
  end

  evaluate_correct_command_usage(@_merged_configurations[@environment])

  @_merged_configurations[@environment]

end
save_base_cfgs() { |obj| ... } click to toggle source

Salva le configurazioni base in HOME

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 165
def save_base_cfgs
  FileUtils.mkdir_p(File.dirname(self.class.base_cfg_path))
  File.open(self.class.base_cfg_path, "wb") do |f|
    obj= {
      version: SwarmClusterCliOpe::VERSION,
    }
    obj = yield(obj) if block_given?

    f.write(obj.to_json)
  end
end
save_project_cfgs() click to toggle source

Si occupa del salvataggio delle configurazioni di progetto, se abbiamo lo stack_name

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 151
def save_project_cfgs
  if stack_name
    File.open(File.join(FileUtils.pwd, self.class.cfgs_project_file_name(with_env: @environment)), "wb") do |f|
      f.write({
                stack_name: stack_name,
                version: VERSION
              }.to_json)
    end
  end
end
stack_name=(objs) click to toggle source

Imposta il nome dello stack

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 40
def stack_name=(objs)
  stack_name #lo richiamo per fargli generare la variabile di classe
  @stack_name[environment] = objs
end
sync_configurations() click to toggle source

Elenco di tutte le configurazioni di sincronizzazione @return [Array]

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 80
def sync_configurations
  cfgs = merged_configurations[:sync_configs]
  return [] if cfgs.nil? or !cfgs.is_a?(Array)
  cfgs.collect do |c|

    if self.get_syncro(c[:how])
      self.get_syncro(c[:how]).new(self, c)
    end

  end.compact
end

Private Instance Methods

evaluate_correct_command_usage(configuration) click to toggle source

Funzione che serve per identificare se siamo nella corretta classe di configurazione e di conseguenza nel corretto set di comandi di configurazione. Serve per non eseguire k8s con le vecchie impostazioni o viceversa

# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 191
def evaluate_correct_command_usage(configuration) end
looped_file(start_folder, file) click to toggle source
# File lib/swarm_cluster_cli_ope/base_configuration.rb, line 210
def looped_file(start_folder, file)
  project_file = nil
  loop do

    if File.exist?(File.join(start_folder, file))
      project_file = File.join(start_folder, file)
    end

    break unless project_file.nil?
    break if start_folder == '/'
    start_folder = File.expand_path("..", start_folder)
  end

  project_file
end