// testDetachFilesystems is a test-case for detaching filesystems that use // the common "maybeUnmount" method. func testDetachFilesystems(c *gc.C, commands *mockRunCommand, source storage.FilesystemSource, mounted bool) { const testMountPoint = "/in/the/place" cmd := commands.expect("df", "--output=source", filepath.Dir(testMountPoint)) cmd.respond("headers\n/same/as/rootfs", nil) cmd = commands.expect("df", "--output=source", testMountPoint) if mounted { cmd.respond("headers\n/different/to/rootfs", nil) commands.expect("umount", testMountPoint) } else { cmd.respond("headers\n/same/as/rootfs", nil) } results, err := source.DetachFilesystems([]storage.FilesystemAttachmentParams{{ Filesystem: names.NewFilesystemTag("0/0"), FilesystemId: "filesystem-0-0", AttachmentParams: storage.AttachmentParams{ Machine: names.NewMachineTag("0"), InstanceId: "inst-id", }, Path: testMountPoint, }}) c.Assert(err, jc.ErrorIsNil) c.Assert(results, gc.HasLen, 1) c.Assert(results[0], jc.ErrorIsNil) }
// validateFilesystemParams validates a collection of filesystem parameters. func validateFilesystemParams( filesystemSource storage.FilesystemSource, filesystemParams []storage.FilesystemParams, ) ([]storage.FilesystemParams, []error) { valid := make([]storage.FilesystemParams, 0, len(filesystemParams)) results := make([]error, len(filesystemParams)) for i, params := range filesystemParams { err := filesystemSource.ValidateFilesystemParams(params) if err == nil { valid = append(valid, params) } results[i] = err } return valid, results }