Sha256: 3acff6e1eadea2934a1e554f1d2b43443a363a79b44204e1262b431600375c3b

Contents?: true

Size: 1.9 KB

Versions: 27

Compression:

Stored size: 1.9 KB

Contents

module Veewee
  module Provider
    module Virtualbox
      module BoxCommand

        def destroy(option={})

          unless self.exists?
            raise Veewee::Error, "Error:: You tried to destroy a non-existing box '#{name}'"
          end

          # If it has a save state,remove that first

          if self.running?
            # Poweroff
            self.poweroff
            # Wait for it to happen
            sleep 2
          end

          command="#{@vboxcmd} unregistervm  \"#{name}\" --delete"
          ui.info command
          ui.info "Deleting vm #{name}"

          #Exec and system stop the execution here
          shell_exec("#{command}",{:mute => true})
          sleep 1

          #if the disk was not attached when the machine was destroyed we also need to delete the disk
          pattern= File::SEPARATOR+name+"."
          #+definition.disk_format.downcase
          found=false
          command="#{@vboxcmd} list hdds -l"
          hdds=shell_exec("#{command}",{:mute => true}).stdout.split(/\n\n/)

          hdds.each do |hdd_text|
            location=hdd_text.split(/\n/).grep(/^Location/).first.split(':')[1].strip
            if location.match(/#{pattern}/)

              if File.exists?(location)
                command="#{@vboxcmd} closemedium disk \"#{location}\" --delete"
              else
                command="#{@vboxcmd} closemedium disk \"#{location}\""
              end

              ui.info "Deleting disk #{location}"
              ui.info "#{command}"

              shell_exec("#{command}",{:mute => true})

              if File.exists?(location)
                ui.info "We tried to delete the disk file via virtualbox '#{location} but failed"
                ui.info "Removing it manually"
                FileUtils.rm(location)
              end
              break
            end
          end
        end

      end #Module
    end #Module
  end #Module
end #Module

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
veewee-0.5.0.alpha4 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.5.0.alpha3 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.5.0.alpha2 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.5.0.alpha1 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.4.5.1 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.4.5 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.4.5.pre1 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.4.4 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.4.3 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.4.2 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.4.1 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.4.0 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.3.12 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.3.11 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.3.10 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.3.9 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-atlassian-0.3.11 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.3.7 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.3.6 lib/veewee/provider/virtualbox/box/destroy.rb
veewee-0.3.5 lib/veewee/provider/virtualbox/box/destroy.rb