Merge pull request #6274 from DanHam/fix-compaction-esx

Revert commits that enabled reporting of disk compaction results for VMware builders
This commit is contained in:
M. Marsh 2018-05-18 09:20:21 -07:00 committed by GitHub
commit cbbbf551e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 53 deletions

View File

@ -4,8 +4,6 @@ import (
"context" "context"
"fmt" "fmt"
"log" "log"
"math"
"os"
"github.com/hashicorp/packer/helper/multistep" "github.com/hashicorp/packer/helper/multistep"
"github.com/hashicorp/packer/packer" "github.com/hashicorp/packer/packer"
@ -38,39 +36,10 @@ func (s StepCompactDisk) Run(_ context.Context, state multistep.StateBag) multis
ui.Say("Compacting all attached virtual disks...") ui.Say("Compacting all attached virtual disks...")
for i, diskFullPath := range diskFullPaths { for i, diskFullPath := range diskFullPaths {
ui.Message(fmt.Sprintf("Compacting virtual disk %d", i+1)) ui.Message(fmt.Sprintf("Compacting virtual disk %d", i+1))
// Get the file size of the virtual disk prior to compaction
fi, err := os.Stat(diskFullPath)
if err != nil {
state.Put("error", fmt.Errorf("Error getting virtual disk file info pre compaction: %s", err))
return multistep.ActionHalt
}
diskFileSizeStart := fi.Size()
// Defragment and compact the disk
if err := driver.CompactDisk(diskFullPath); err != nil { if err := driver.CompactDisk(diskFullPath); err != nil {
state.Put("error", fmt.Errorf("Error compacting disk: %s", err)) state.Put("error", fmt.Errorf("Error compacting disk: %s", err))
return multistep.ActionHalt return multistep.ActionHalt
} }
// Get the file size of the virtual disk post compaction
fi, err = os.Stat(diskFullPath)
if err != nil {
state.Put("error", fmt.Errorf("Error getting virtual disk file info post compaction: %s", err))
return multistep.ActionHalt
}
diskFileSizeEnd := fi.Size()
// Report compaction results
log.Printf("Before compaction the disk file size was: %d", diskFileSizeStart)
log.Printf("After compaction the disk file size was: %d", diskFileSizeEnd)
if diskFileSizeStart > 0 {
percentChange := ((float64(diskFileSizeEnd) / float64(diskFileSizeStart)) * 100.0) - 100.0
switch {
case percentChange < 0:
ui.Message(fmt.Sprintf("Compacting reduced the disk file size by %.2f%%", math.Abs(percentChange)))
case percentChange == 0:
ui.Message(fmt.Sprintf("The compacting operation left the disk file size unchanged"))
case percentChange > 0:
ui.Message(fmt.Sprintf("WARNING: Compacting increased the disk file size by %.2f%%", percentChange))
}
}
} }
return multistep.ActionContinue return multistep.ActionContinue

View File

@ -2,8 +2,6 @@ package common
import ( import (
"context" "context"
"io/ioutil"
"os"
"testing" "testing"
"github.com/hashicorp/packer/helper/multistep" "github.com/hashicorp/packer/helper/multistep"
@ -17,25 +15,8 @@ func TestStepCompactDisk(t *testing.T) {
state := testState(t) state := testState(t)
step := new(StepCompactDisk) step := new(StepCompactDisk)
// Create a fake vmdk file for disk file size operations diskFullPaths := []string{"foo"}
diskFile, err := ioutil.TempFile("", "disk.vmdk") state.Put("disk_full_paths", diskFullPaths)
if err != nil {
t.Fatalf("Error creating fake vmdk file: %s", err)
}
diskFullPath := diskFile.Name()
defer os.Remove(diskFullPath)
content := []byte("I am the fake vmdk's contents")
if _, err := diskFile.Write(content); err != nil {
t.Fatalf("Error writing to fake vmdk file: %s", err)
}
if err := diskFile.Close(); err != nil {
t.Fatalf("Error closing fake vmdk file: %s", err)
}
// Set up required state
state.Put("disk_full_paths", []string{diskFullPath})
driver := state.Get("driver").(*DriverMock) driver := state.Get("driver").(*DriverMock)
@ -51,7 +32,7 @@ func TestStepCompactDisk(t *testing.T) {
if !driver.CompactDiskCalled { if !driver.CompactDiskCalled {
t.Fatal("should've called") t.Fatal("should've called")
} }
if driver.CompactDiskPath != diskFullPath { if driver.CompactDiskPath != "foo" {
t.Fatal("should call with right path") t.Fatal("should call with right path")
} }
} }