feat: Port tape access management to delete cmd
This commit is contained in:
@@ -50,36 +50,24 @@ var deleteCmd = &cobra.Command{
|
||||
return err
|
||||
}
|
||||
|
||||
writer, writerIsRegular, err := tape.OpenTapeWriteOnly(
|
||||
tm := tape.NewTapeManager(
|
||||
viper.GetString(driveFlag),
|
||||
viper.GetInt(recordSizeFlag),
|
||||
false,
|
||||
viper.GetBool(overwriteFlag),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer writer.Close()
|
||||
reader, readerIsRegular, err := tape.OpenTapeReadOnly(
|
||||
viper.GetString(driveFlag),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer reader.Close()
|
||||
|
||||
return operations.Delete(
|
||||
config.DriveWriterConfig{
|
||||
Drive: writer,
|
||||
DriveIsRegular: writerIsRegular,
|
||||
},
|
||||
config.DriveReaderConfig{
|
||||
Drive: reader,
|
||||
DriveIsRegular: readerIsRegular,
|
||||
},
|
||||
config.DriveConfig{
|
||||
Drive: reader,
|
||||
DriveIsRegular: readerIsRegular,
|
||||
},
|
||||
ops := operations.NewOperations(
|
||||
tm.GetWriter,
|
||||
tm.Close,
|
||||
|
||||
tm.GetReader,
|
||||
tm.Close,
|
||||
|
||||
tm.GetDrive,
|
||||
tm.Close,
|
||||
)
|
||||
|
||||
return ops.Delete(
|
||||
config.MetadataConfig{
|
||||
Metadata: viper.GetString(metadataFlag),
|
||||
},
|
||||
|
||||
@@ -15,10 +15,7 @@ import (
|
||||
"github.com/pojntfx/stfs/pkg/recovery"
|
||||
)
|
||||
|
||||
func Delete(
|
||||
writer config.DriveWriterConfig,
|
||||
reader config.DriveReaderConfig,
|
||||
drive config.DriveConfig,
|
||||
func (o *Operations) Delete(
|
||||
metadata config.MetadataConfig,
|
||||
pipes config.PipeConfig,
|
||||
crypto config.CryptoConfig,
|
||||
@@ -28,6 +25,14 @@ func Delete(
|
||||
|
||||
onHeader func(hdr *models.Header),
|
||||
) error {
|
||||
o.writeLock.Lock()
|
||||
defer o.writeLock.Unlock()
|
||||
|
||||
writer, err := o.getWriter()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
dirty := false
|
||||
tw, cleanup, err := tarext.NewTapeWriter(writer.Drive, writer.DriveIsRegular, recordSize)
|
||||
if err != nil {
|
||||
@@ -103,6 +108,22 @@ func Delete(
|
||||
return err
|
||||
}
|
||||
|
||||
if err := o.closeWriter(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
reader, err := o.getReader()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer o.closeReader()
|
||||
|
||||
drive, err := o.getDrive()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer o.closeDrive()
|
||||
|
||||
return recovery.Index(
|
||||
reader,
|
||||
drive,
|
||||
|
||||
Reference in New Issue
Block a user