class Chef::Provider::Package::Solaris

Public Instance Methods

candidate_version() click to toggle source
# File lib/chef/provider/package/solaris.rb, line 84
def candidate_version
  return @candidate_version if @candidate_version
  status = shell_out_compact_timeout("pkginfo", "-l", "-d", new_resource.source, new_resource.package_name)
  status.stdout.each_line do |line|
    case line
    when /VERSION:\s+(.+)/
      @candidate_version = $1
      new_resource.version($1)
      logger.trace("#{new_resource} setting install candidate version to #{@candidate_version}")
    end
  end
  unless status.exitstatus == 0
    raise Chef::Exceptions::Package, "pkginfo -l -d #{new_resource.source} - #{status.inspect}!"
  end
  @candidate_version
end
define_resource_requirements() click to toggle source

def initialize(*args)

super
@current_resource = Chef::Resource::Package.new(new_resource.name)

end

# File lib/chef/provider/package/solaris.rb, line 37
def define_resource_requirements
  super
  requirements.assert(:install) do |a|
    a.assertion { new_resource.source }
    a.failure_message Chef::Exceptions::Package, "Source for package #{new_resource.name} required for action install"
  end
  requirements.assert(:all_actions) do |a|
    a.assertion { !new_resource.source || @package_source_found }
    a.failure_message Chef::Exceptions::Package, "Package #{new_resource.name} not found: #{new_resource.source}"
    a.whyrun "would assume #{new_resource.source} would be have previously been made available"
  end
end
install_package(name, version) click to toggle source
# File lib/chef/provider/package/solaris.rb, line 101
def install_package(name, version)
  logger.trace("#{new_resource} package install options: #{options}")
  if options.nil?
    command = if ::File.directory?(new_resource.source) # CHEF-4469
                [ "pkgadd", "-n", "-d", new_resource.source, new_resource.package_name ]
              else
                [ "pkgadd", "-n", "-d", new_resource.source, "all" ]
              end
    shell_out_compact_timeout!(command)
    logger.trace("#{new_resource} installed version #{new_resource.version} from: #{new_resource.source}")
  else
    command = if ::File.directory?(new_resource.source) # CHEF-4469
                [ "pkgadd", "-n", options, "-d", new_resource.source, new_resource.package_name ]
              else
                [ "pkgadd", "-n", options, "-d", new_resource.source, "all" ]
              end
    shell_out_compact_timeout!(*command)
    logger.trace("#{new_resource} installed version #{new_resource.version} from: #{new_resource.source}")
  end
end
Also aliased as: upgrade_package
load_current_resource() click to toggle source
# File lib/chef/provider/package/solaris.rb, line 50
def load_current_resource
  @current_resource = Chef::Resource::Package.new(new_resource.name)
  current_resource.package_name(new_resource.package_name)

  if new_resource.source
    @package_source_found = ::File.exist?(new_resource.source)
    if @package_source_found
      logger.trace("#{new_resource} checking pkg status")
      shell_out_compact_timeout("pkginfo", "-l", "-d", new_resource.source, new_resource.package_name).stdout.each_line do |line|
        case line
        when /VERSION:\s+(.+)/
          new_resource.version($1)
        end
      end
    end
  end

  logger.trace("#{new_resource} checking install state")
  status = shell_out_compact_timeout("pkginfo", "-l", current_resource.package_name)
  status.stdout.each_line do |line|
    case line
    when /VERSION:\s+(.+)/
      logger.trace("#{new_resource} version #{$1} is already installed")
      current_resource.version($1)
    end
  end

  unless status.exitstatus == 0 || status.exitstatus == 1
    raise Chef::Exceptions::Package, "pkginfo failed - #{status.inspect}!"
  end

  current_resource
end
remove_package(name, version) click to toggle source
# File lib/chef/provider/package/solaris.rb, line 124
def remove_package(name, version)
  if options.nil?
    shell_out_compact_timeout!( "pkgrm", "-n", name )
    logger.trace("#{new_resource} removed version #{new_resource.version}")
  else
    shell_out_compact_timeout!( "pkgrm", "-n", options, name )
    logger.trace("#{new_resource} removed version #{new_resource.version}")
  end
end
upgrade_package(name, version)
Alias for: install_package