27 lines
833 B
Go
27 lines
833 B
Go
package wcow
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/Microsoft/hcsshim/internal/copyfile"
|
|
"github.com/Microsoft/hcsshim/internal/wclayer"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// CreateUVMScratch is a helper to create a scratch for a Windows utility VM
|
|
// with permissions to the specified VM ID in a specified directory
|
|
func CreateUVMScratch(imagePath, destDirectory, vmID string) error {
|
|
sourceScratch := filepath.Join(imagePath, `UtilityVM\SystemTemplate.vhdx`)
|
|
targetScratch := filepath.Join(destDirectory, "sandbox.vhdx")
|
|
logrus.Debugf("uvm::CreateUVMScratch %s from %s", targetScratch, sourceScratch)
|
|
if err := copyfile.CopyFile(sourceScratch, targetScratch, true); err != nil {
|
|
return err
|
|
}
|
|
if err := wclayer.GrantVmAccess(vmID, targetScratch); err != nil {
|
|
os.Remove(targetScratch)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|