class Egon::Undercloud::Installer

Attributes

started[R]
started?[R]

Public Class Methods

new(connection=nil) click to toggle source

installs locally if ssh connection is not provided

# File lib/egon/undercloud/installer.rb, line 13
def initialize(connection=nil)
  @connection = connection
  @completed = false
  @started = false
  @failure = false
end

Public Instance Methods

check_ports(stringio=nil) click to toggle source
# File lib/egon/undercloud/installer.rb, line 55
def check_ports(stringio=nil)
  # closed ports 5385, 36357
  address = File.foreach('/home/stack/undercloud.conf')
                .grep(/^local_ip/).first
                .match(/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/).to_s
  ports = [8774, 9292, 8777, 9696, 8004, 5000, 8585, 15672]
  ports.each do |p|
    if !@connection.nil?
      # remote check
      if !@connection.remote_port_open?(p, stringio)
        set_failure(true)
      end
    else
      # local check
      set_failure(true) unless !port_open?(address, p, stringio)
    end
  end
end
completed?() click to toggle source
# File lib/egon/undercloud/installer.rb, line 20
def completed?
  @completed
end
failure?() click to toggle source
# File lib/egon/undercloud/installer.rb, line 28
def failure?
  @failure
end
install(commands, stringio=nil) click to toggle source
# File lib/egon/undercloud/installer.rb, line 36
def install(commands, stringio=nil)
  @started = true
  @completed = false

  if !@connection.nil?
    # remote install
    @connection.on_complete(lambda { set_completed(true) })
    @connection.on_failure(lambda { set_failure(true) })

    Thread.new {
      @connection.execute(commands, stringio)
    }
  else
    # local install
    set_failure(true) unless system(commands)
    set_completed(true)
  end
end
set_completed(bool) click to toggle source
# File lib/egon/undercloud/installer.rb, line 24
def set_completed(bool)
  @completed = bool
end
set_failure(bool) click to toggle source
# File lib/egon/undercloud/installer.rb, line 32
def set_failure(bool)
  @failure = bool
end