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

Raises:

  • (ArgumentError)

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



343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
# File 'lib/beaker/host/unix/pkg.rb', line 343

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