Module: Beaker::DSL::InstallUtils::PEClientTools

Included in:
PE
Defined in:
lib/beaker-pe/pe-client-tools/install_helper.rb

Instance Method Summary collapse

Instance Method Details

#install_pe_client_tools_on(hosts, opts = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/beaker-pe/pe-client-tools/install_helper.rb', line 6

def install_pe_client_tools_on(hosts, opts = {})
  # FIXME: accomodate production released location(s)
  #{{{
  product = 'pe-client-tools'
  required_keys = [:puppet_collection, :pe_client_tools_sha, :pe_client_tools_version]

  unless required_keys.all? { |opt| opts.keys.include?(opt) }
    raise ArgumentError, "The keys #{required_keys.to_s} are required in the opts hash"
  end
  urls = { :dev_builds_url   => "http://builds.delivery.puppetlabs.net",
  }

  opts = urls.merge(opts)

  block_on hosts do |host|
    package_name = nil
    variant, version, arch, codename = host['platform'].to_array
    case host['platform']
    when /el-|fedora|sles|centos|cisco_/
      release_path = "#{opts[:dev_builds_url]}/#{product}/#{ opts[:pe_client_tools_sha] }/artifacts/#{variant}/#{version}/#{opts[:puppet_collection]}/#{arch}"
      package_name = product.dup
      package_name << "-#{opts[:pe_client_tools_version]}-1.#{variant}#{version}.#{arch}.rpm" if opts[:pe_client_tools_version]
    when /debian|ubuntu|cumulus|huaweios/
      release_path = "#{opts[:dev_builds_url]}/#{product}/#{ opts[:pe_client_tools_sha] }/artifacts/deb/#{codename}/#{opts[:puppet_collection]}"
      package_name = product.dup
      package_name << "_#{opts[:pe_client_tools_version]}-1#{host['platform'].codename}_#{arch}.deb" if opts[:pe_client_tools_version]
    when /windows/
      release_path = "#{opts[:dev_builds_url]}/#{product}/#{ opts[:pe_client_tools_sha] }/artifacts/#{variant}"
      package_name = product.dup
      package_name << "-#{opts[:pe_client_tools_version]}-x#{arch}.msi" if opts[:pe_client_tools_version]
    when /osx/
      release_path = "#{opts[:dev_builds_url]}/#{product}/#{ opts[:pe_client_tools_sha] }/artifacts/apple/#{version}/#{opts[:puppet_collection]}/#{arch}"
      package_base = product.dup
      package_base << "-#{opts[:pe_client_tools_version]}" if opts[:pe_client_tools_version]
      package_name = package_base.dup
      package_name << '-1' if opts[:pe_client_tools_version]
      installer    = package_name + '-installer.pkg'
      package_name << ".#{variant}#{version}.dmg" if opts[:pe_client_tools_version]
    else
      raise "install_puppet_agent_on() called for unsupported " +
        "platform '#{host['platform']}' on '#{host.name}'"
    end

    if package_name
      case host['platform']
      when /windows/
        generic_install_msi_on(host, File.join(release_path, package_name), {}, {:debug => true})
      else
        copy_dir_local = File.join('tmp', 'repo_configs')
        fetch_http_file(release_path, package_name, copy_dir_local)
        scp_to host, File.join(copy_dir_local, package_name), host.external_copy_base

        if host['platform'] =~ /debian|ubuntu|cumulus|huaweios/
          on host, "dpkg -i #{package_name}"
        elsif host['platform'] =~ /osx/
          host.generic_install_dmg(package_name, package_base, installer)
        else
          host.install_package( package_name )
        end
      end
    end
  end
  #}}}
end