Sha256: 42291cc6a47925fb9f363588a388bc4e36a14c9b0df993a243910fb7731fc9ef

Contents?: true

Size: 1.93 KB

Versions: 9

Compression:

Stored size: 1.93 KB

Contents

module VagrantPlugins
  module Parallels
    module GuestLinuxCap
      class InstallParallelsTools

        def self.install_parallels_tools(machine)
          if ptiagent_usable?(machine)
            # Argument '--info' means that Parallels Tools version will be
            # checked before the installing.
            machine.communicate.sudo('ptiagent-cmd --info')
          else
            machine.communicate.tap do |comm|
              tools_iso_path = File.expand_path(
                machine.provider.driver.read_guest_tools_iso_path('linux'),
                machine.env.root_path
              )
              remote_file = '/tmp/prl-tools-lin.iso'
              mount_point = "/media/prl-tools-lin_#{rand(100000)}/"

              comm.upload(tools_iso_path, remote_file)

              # Create mount point directory if needed
              if !comm.test("test -d \"#{mount_point}\"", :sudo => true)
                comm.sudo("mkdir -p \"#{mount_point}\"")
              end

              # Mount ISO and install Parallels Tools
              comm.sudo("mount -o loop #{remote_file} #{mount_point}")
              comm.sudo("#{mount_point}/install --install-unattended-with-deps")
              comm.sudo("umount -f \"#{mount_point}\"")

              comm.sudo("rm -Rf \"#{mount_point}\"")
              comm.sudo("rm -f \"#{remote_file}\"")
            end
          end
        end

        private

        # This helper detects is Parallels Tools Installation Agent (PTIAgent)
        # available and can be used
        def self.ptiagent_usable?(machine)
          # Parallels Desktop 9 or higher should be installed on the host and
          # 'ptiagent-cmd' binary should be available on the guest

          machine.provider_name == :parallels &&
          Gem::Version.new(machine.provider.driver.version) >= Gem::Version.new('9') &&
          machine.communicate.test('which ptiagent-cmd', :sudo => true)
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
vagrant-parallels-1.7.1 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
vagrant-parallels-1.7.0 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
vagrant-parallels-1.6.3 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
vagrant-parallels-1.6.2 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
vagrant-parallels-1.6.1 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
vagrant-parallels-1.6.0 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
vagrant-parallels-1.5.1 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
vagrant-parallels-1.5.0 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
vagrant-parallels-1.4.3 lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb