class MovieMasher::AwsInitService

initializes aws service

Public Instance Methods

__lines_in_ini(result) click to toggle source
# File service/aws/aws_init.rb, line 41
def __lines_in_ini(result)
  lines = []
  File.foreach(PathIni) do |line|
    line.strip!
    if line.include?('=')
      bits = line.split('=')
      variable = bits.shift
      new_value = result['angular-moviemasher'][variable]
      line = "#{variable}=#{new_value}" unless new_value.nil?
    end
    lines << line
  end
  lines
end
init() click to toggle source
# File service/aws/aws_init.rb, line 6
def init
  me = 'AwsInitService#init'
  result = nil
  puts "#{Time.now} #{me} called, checking for user data"
  cmd = '/opt/aws/bin/ec2-metadata --user-data'
  puts cmd
  stdin = Open3.capture3(cmd).first
  launch_apache = no_data = stdin.start_with?('user-data: not available')
  unless no_data
    stdin['user-data: '] = ''
    begin
      result = JSON.parse(stdin)
      if result['angular-moviemasher'].is_a?(Hash)
        puts "#{Time.now} #{me} found angular-moviemasher config"
        lines = __lines_in_ini(result)
        File.open(PathIni, 'w') { |file| file.write(lines.join("\n")) }
        puts "#{Time.now} #{me} updated angular-moviemasher ini file"
        result.delete('angular-moviemasher')
        launch_apache = true
      end
      result = result['moviemasher.rb'] unless result['moviemasher.rb'].nil?
    rescue StandardError => e
      puts "#{Time.now} #{me} couldn't parse user data as JSON #{e.message}"
    end
  end
  if launch_apache
    puts "#{Time.now} #{me} starting web server"
    cmd = 'systemctl restart httpd'
    puts cmd
    apache_result = Open3.capture3 cmd
    puts apache_result
  end
  result
end