From 3c005a9291179fbb9b4c39434fa884325675624d Mon Sep 17 00:00:00 2001 From: Michael Kuzmin Date: Sat, 5 Jan 2019 00:55:04 +0300 Subject: [PATCH] File upload to DRS-enabled clusters (fix #202) --- .gitignore | 1 + driver/datastore.go | 13 +++++-- driver/datastore_acc_test.go | 73 ++++++++++++++++++++++++++++++++++++ iso/preseed.cfg | 16 -------- 4 files changed, 83 insertions(+), 20 deletions(-) delete mode 100644 iso/preseed.cfg diff --git a/.gitignore b/.gitignore index 693c791b3..b99b727f8 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ bin/ .env test*.json crash.log +packer_cache/ diff --git a/driver/datastore.go b/driver/datastore.go index 4e0c191f0..eed3d4f28 100644 --- a/driver/datastore.go +++ b/driver/datastore.go @@ -83,11 +83,16 @@ func (ds *Datastore) ResolvePath(path string) string { func (ds *Datastore) UploadFile(src, dst string, host string) error { p := soap.DefaultUpload - h, err := ds.driver.FindHost(host) - if err != nil { - return err + ctx := ds.driver.ctx + + if host != "" { + h, err := ds.driver.FindHost(host) + if err != nil { + return err + } + ctx = ds.ds.HostContext(ctx, h.host) } - ctx := ds.ds.HostContext(ds.driver.ctx, h.host) + return ds.ds.UploadFile(ctx, src, dst, &p) } diff --git a/driver/datastore_acc_test.go b/driver/datastore_acc_test.go index 3b13535af..75a522711 100644 --- a/driver/datastore_acc_test.go +++ b/driver/datastore_acc_test.go @@ -1,7 +1,10 @@ package driver import ( + "fmt" + "io/ioutil" "testing" + "time" ) func TestDatastoreAcc(t *testing.T) { @@ -18,3 +21,73 @@ func TestDatastoreAcc(t *testing.T) { t.Errorf("Wrong datastore. expected: 'datastore1', got: '%v'", info.Name) } } + +func TestFileUpload(t *testing.T) { + dsName := "datastore1" + hostName := "esxi-1.vsphere65.test" + + fileName := fmt.Sprintf("test-%v", time.Now().Unix()) + tmpFile, err := ioutil.TempFile("", fileName) + if err != nil { + t.Fatalf("Error creating temp file") + } + err = tmpFile.Close() + if err != nil { + t.Fatalf("Error creating temp file") + } + + d := newTestDriver(t) + ds, err := d.FindDatastore(dsName, hostName) + if err != nil { + t.Fatalf("Cannot find datastore '%v': %v", dsName, err) + } + + err = ds.UploadFile(tmpFile.Name(), fileName, hostName) + if err != nil { + t.Fatalf("Cannot upload file: %v", err) + } + + if ds.FileExists(fileName) != true { + t.Fatalf("Cannot find file") + } + + err = ds.Delete(fileName) + if err != nil { + t.Fatalf("Cannot delete file: %v", err) + } +} + +func TestFileUploadDRS(t *testing.T) { + dsName := "datastore3" + hostName := "" + + fileName := fmt.Sprintf("test-%v", time.Now().Unix()) + tmpFile, err := ioutil.TempFile("", fileName) + if err != nil { + t.Fatalf("Error creating temp file") + } + err = tmpFile.Close() + if err != nil { + t.Fatalf("Error creating temp file") + } + + d := newTestDriver(t) + ds, err := d.FindDatastore(dsName, hostName) + if err != nil { + t.Fatalf("Cannot find datastore '%v': %v", dsName, err) + } + + err = ds.UploadFile(tmpFile.Name(), fileName, hostName) + if err != nil { + t.Fatalf("Cannot upload file: %v", err) + } + + if ds.FileExists(fileName) != true { + t.Fatalf("Cannot find file") + } + + err = ds.Delete(fileName) + if err != nil { + t.Fatalf("Cannot delete file: %v", err) + } +} diff --git a/iso/preseed.cfg b/iso/preseed.cfg deleted file mode 100644 index ec963b6b2..000000000 --- a/iso/preseed.cfg +++ /dev/null @@ -1,16 +0,0 @@ -d-i passwd/user-fullname string jetbrains -d-i passwd/username string jetbrains -d-i passwd/user-password password jetbrains -d-i passwd/user-password-again password jetbrains -d-i user-setup/allow-password-weak boolean true - -d-i partman-auto/disk string /dev/sda -d-i partman-auto/method string regular -d-i partman-partitioning/confirm_write_new_label boolean true -d-i partman/choose_partition select finish -d-i partman/confirm boolean true -d-i partman/confirm_nooverwrite boolean true - -d-i pkgsel/include string open-vm-tools openssh-server - -d-i finish-install/reboot_in_progress note