class Superhosting::Controller::Mux

Attributes

index[W]

Public Class Methods

new(**kwargs) click to toggle source
Calls superclass method Superhosting::Base::new
# File lib/superhosting/controller/mux.rb, line 6
def initialize(**kwargs)
  super
  @container_controller = self.get_controller(Container)
end

Public Instance Methods

add(name:) click to toggle source
# File lib/superhosting/controller/mux.rb, line 11
def add(name:)
  if (resp = self.adding_validation(name: name))
    mux_name = name[/(?<=mux-).*/]
    mapper = MapperInheritance::Mux.new(@config.muxs.f(mux_name)).set_inheritors

    # docker
    mapper.erb_options = { mux: mapper }
    if (resp = @container_controller._collect_docker_options(mapper: mapper, model_or_mux: mux_name)).net_status_ok?
      docker_options = resp[:data]
      @container_controller._safe_run_docker(*docker_options, name: name ).net_status_ok!
    end
  else
    resp
  end
end
adding_validation(name:) click to toggle source
# File lib/superhosting/controller/mux.rb, line 36
def adding_validation(name:)
  if (resp = @container_controller.base_validation(name: name)).net_status_ok?
    resp = self.not_running_validation(name: name)
  end
  resp
end
existing_validation(name:) click to toggle source
# File lib/superhosting/controller/mux.rb, line 43
def existing_validation(name:)
  self.index.include?(name) ? {} : { error: :logical_error, code: :mux_does_not_exists, data: { name: name } }
end
index() click to toggle source
# File lib/superhosting/controller/mux.rb, line 55
def index
  @@index ||= self.reindex
end
index_pop(mux_name, container_name) click to toggle source
# File lib/superhosting/controller/mux.rb, line 75
def index_pop(mux_name, container_name)
  if self.index.key? mux_name
    self.index[mux_name].delete(container_name)
    self.index.delete(mux_name) if self.index[mux_name].empty?
  end
end
index_push(mux_name, container_name) click to toggle source
# File lib/superhosting/controller/mux.rb, line 82
def index_push(mux_name, container_name)
  self.index[mux_name] ||= []
  self.index[mux_name] << container_name unless self.index[mux_name].include? container_name
end
not_running_validation(name:) click to toggle source
# File lib/superhosting/controller/mux.rb, line 47
def not_running_validation(name:)
  @container_controller.not_running_validation(name: name).net_status_ok? ? {} : { error: :logical_error, code: :mux_is_running, data: { name: name } }
end
reconfigure(name:) click to toggle source
# File lib/superhosting/controller/mux.rb, line 27
def reconfigure(name:)
  if (resp = self.existing_validation(name: name)).net_status_ok?
    self.index[name].each do |container_name|
      break unless (resp = @container_controller.reconfigure(name: container_name)).net_status_ok?
    end
  end
  resp
end
reindex() click to toggle source
# File lib/superhosting/controller/mux.rb, line 59
def reindex
  @@index ||= {}
  @container_controller._list.map do |container_name, data|
    container_mapper = @container_controller.index[container_name][:mapper]
    if (mux_mapper = container_mapper.mux).file?
      mux_name = "mux-#{mux_mapper.value}"
      if @container_controller.running_validation(name: container_name).net_status_ok?
        self.index_push(mux_name, container_name)
      else
        self.index_pop(mux_name, container_name)
      end
    end
  end
  @@index
end
running_validation(name:) click to toggle source
# File lib/superhosting/controller/mux.rb, line 51
def running_validation(name:)
  @container_controller.running_validation(name: name).net_status_ok? ? {} : { error: :logical_error, code: :mux_is_not_running, data: { name: name } }
end