From 43be2bb30c0686ece2513024762b241086ecb588 Mon Sep 17 00:00:00 2001 From: Emma Date: Tue, 11 Oct 2016 10:26:43 -0500 Subject: [PATCH 1/2] Delete vmdk first before delete directory for vc 6.5 or newer --- lib/install/management/store_files.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/install/management/store_files.go b/lib/install/management/store_files.go index 32600fcd1d..0a02248384 100644 --- a/lib/install/management/store_files.go +++ b/lib/install/management/store_files.go @@ -126,7 +126,7 @@ func (d *Dispatcher) deleteDatastoreFiles(ds *object.Datastore, path string, for } m := object.NewFileManager(ds.Client()) - if d.isVSAN(ds) { + if d.geVC65() || d.isVSAN(ds) { if err = d.deleteFilesIteratively(m, ds, dsPath); err != nil { return empty, err } @@ -139,6 +139,12 @@ func (d *Dispatcher) deleteDatastoreFiles(ds *object.Datastore, path string, for return true, nil } +func (d *Dispatcher) geVC65() bool { + vcVersion := d.session.Client.ServiceContent.About.Version + // vsphere only has versions 5.5.x, 6.0.x, 6.5.x, not likely to have 6.10.x, so compare string directly here + return strings.Compare(vcVersion, "6.5.0") >= 0 +} + func (d *Dispatcher) isVSAN(ds *object.Datastore) bool { dsType, _ := ds.Type(d.ctx) From 088dc5e118283505901ecbfb4ec2886a1fc9fe24 Mon Sep 17 00:00:00 2001 From: Emma Date: Thu, 13 Oct 2016 10:04:08 -0500 Subject: [PATCH 2/2] Recursively delete datastore files Do not differentiate vc6.0 and 6.5, vmfs and vsan datastore to reduce difference based on env. --- lib/install/management/store_files.go | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/lib/install/management/store_files.go b/lib/install/management/store_files.go index 0a02248384..f8677d1cb9 100644 --- a/lib/install/management/store_files.go +++ b/lib/install/management/store_files.go @@ -42,6 +42,8 @@ func (d *Dispatcher) deleteImages(conf *config.VirtualContainerHostConfigSpec) e defer trace.End(trace.Begin("")) var errs []string + log.Infoln("Removing image stores") + for _, imageDir := range conf.ImageStores { imageDSes, err := d.session.Finder.DatastoreList(d.ctx, imageDir.Host) if err != nil { @@ -126,25 +128,12 @@ func (d *Dispatcher) deleteDatastoreFiles(ds *object.Datastore, path string, for } m := object.NewFileManager(ds.Client()) - if d.geVC65() || d.isVSAN(ds) { - if err = d.deleteFilesIteratively(m, ds, dsPath); err != nil { - return empty, err - } - return true, nil - } - - if err = d.deleteVMFSFiles(m, ds, dsPath); err != nil { + if err = d.deleteFilesIteratively(m, ds, dsPath); err != nil { return empty, err } return true, nil } -func (d *Dispatcher) geVC65() bool { - vcVersion := d.session.Client.ServiceContent.About.Version - // vsphere only has versions 5.5.x, 6.0.x, 6.5.x, not likely to have 6.10.x, so compare string directly here - return strings.Compare(vcVersion, "6.5.0") >= 0 -} - func (d *Dispatcher) isVSAN(ds *object.Datastore) bool { dsType, _ := ds.Type(d.ctx) @@ -306,7 +295,7 @@ func (d *Dispatcher) deleteVolumeStoreIfForced(conf *config.VirtualContainerHost return 0 } - log.Infoln("Removing volume stores...") + log.Infoln("Removing volume stores") for label, url := range conf.VolumeLocations { // FIXME: url is being encoded by the portlayer incorrectly, so we have to convert url.Path to the right url.URL object dsURL, err := datastore.ToURL(url.Path)