Method: Unix::Pkg#solaris_puppet_agent_dev_package_info

Defined in:
lib/beaker/host/unix/pkg.rb

#solaris_puppet_agent_dev_package_info(puppet_collection = nil, puppet_agent_version = nil, opts = {}) ⇒ String

Note:

Solaris does require :download_url to be set on the opts argument in order to check for builds on the builds server

Gets the path & file name for the puppet agent dev package on Unix

Parameters:

  • puppet_collection (String) (defaults to: nil)

    Name of the puppet collection to use

  • puppet_agent_version (String) (defaults to: nil)

    Version of puppet agent to get

  • opts (Hash{Symbol=>String}) (defaults to: {})

    Options hash to provide extra values

Returns:

  • (String, String)

    Path to the directory and filename of the package, respectively

Raises:

  • (ArgumentError)

    If one of the two required parameters (puppet_collection, puppet_agent_version) is either not passed or set to nil



313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
# File 'lib/beaker/host/unix/pkg.rb', line 313

def solaris_puppet_agent_dev_package_info( puppet_collection = nil, puppet_agent_version = nil, opts = {} )
  error_message = "Must provide %s argument to get puppet agent package information"
  raise ArgumentError, error_message % "puppet_collection" unless puppet_collection
  raise ArgumentError, error_message % "puppet_agent_version" unless puppet_agent_version
  raise ArgumentError, error_message % "opts[:download_url]" unless opts[:download_url]

  variant, version, arch, codename = self['platform'].to_array

  version = version.split('.')[0] # packages are only published for major versions

  platform_error = "Incorrect platform '#{variant}' for #solaris_puppet_agent_dev_package_info"
  raise ArgumentError, platform_error if variant != 'solaris'

  if arch == 'x86_64'
    arch = 'i386'
  end
  release_path_end = "solaris/#{version}/#{puppet_collection}"
  solaris_revision_conjunction = '-'
  revision = '1'
  if version == '10'
    solaris_release_version = ''
    pkg_suffix = 'pkg.gz'
    solaris_name_conjunction = '-'
    component_version = puppet_agent_version
  elsif version == '11'
    # Ref:
    # http://www.oracle.com/technetwork/articles/servers-storage-admin/ips-package-versioning-2232906.html
    #
    # Example to show package name components:
    #   Full package name: [email protected],5.11-1.sparc.p5p
    #   Schema: <component-name><solaris_name_conjunction><component_version><solaris_release_version><solaris_revision_conjunction><revision>.<arch>.<pkg_suffix>
    solaris_release_version = ',5.11' # injecting comma to prevent from adding another var
    pkg_suffix = 'p5p'
    solaris_name_conjunction = '@'
    component_version = puppet_agent_version.dup
    component_version.gsub!(/[a-zA-Z]/, '')
    component_version.gsub!(/(^-)|(-$)/, '')
    # Here we strip leading 0 from version components but leave
    # singular 0 on their own.
    component_version = component_version.split('-').join('.')
    component_version = component_version.split('.').map(&:to_i).join('.')
  end
  release_file_base = "puppet-agent#{solaris_name_conjunction}#{component_version}#{solaris_release_version}"
  release_file_end = "#{arch}.#{pkg_suffix}"
  release_file = "#{release_file_base}#{solaris_revision_conjunction}#{revision}.#{release_file_end}"
  if not link_exists?("#{opts[:download_url]}/#{release_path_end}/#{release_file}")
    release_file = "#{release_file_base}.#{release_file_end}"
  end
  return release_path_end, release_file
end