diff options
| author | Jeff Carr <[email protected]> | 2024-10-25 20:05:04 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2024-10-25 20:05:04 -0500 |
| commit | b35c04414a96ce62e19ff31649a09ba0c2cc45b6 (patch) | |
| tree | 146ffcbb8b3164d0433269b2a74430a40287769a /validate.go | |
| parent | 030af1bcfb7dad880a9fdf4286432fc36d1bf251 (diff) | |
checking for duplicate filenames works
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'validate.go')
| -rw-r--r-- | validate.go | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/validate.go b/validate.go index 2f7de9b..5791c03 100644 --- a/validate.go +++ b/validate.go @@ -14,6 +14,7 @@ package main */ import ( + "errors" "os" "path/filepath" @@ -50,6 +51,49 @@ func addClusterFilepath(dir string) { } } +// returns the droplet using a filename +func lookupFilename(filename string) *pb.Droplet { + filebase := filepath.Base(filename) + + for _, d := range me.cluster.Droplets { + for _, disk := range d.Disks { + if filebase == disk.Filename { + return d + } + } + } + return nil +} + +func insertFilename(d *pb.Droplet, filename string) (*pb.Event, error) { + dupd := lookupFilename(filename) + if dupd != nil { + log.Info("file", filename, "already on droplet", dupd.Hostname) + log.Info("file", filename, "on new droplet", d.Hostname) + log.Info("duplicate disk names (--xml-ignore-disk to ignore)") + return nil, errors.New("duplicate disk names") + } + filebase := filepath.Base(filename) + dir := filepath.Dir(filename) + for _, disk := range d.Disks { + if disk.Filename == filebase { + log.Info("already have disk", filename) + return nil, nil + } + } + // make a new Add Event + e := NewChangeEvent(d, "Add Disk", "", filename) + + // add the disk protobuf entry + var disk *pb.Disk + disk = new(pb.Disk) + disk.Filename = filebase + disk.Filepath = dir + d.Disks = append(d.Disks, disk) + log.Info("New filename", filebase, dir) + return e, nil +} + func checkUniqueFilenames() bool { var ok bool = true var disks map[string]string @@ -60,10 +104,10 @@ func checkUniqueFilenames() bool { filename := disk.Filename if _, ok := disks[filename]; ok { /* - if argv.IgnDisk { - log.Info("ignore dup disk", filename, disks[filename], d.Hostname) - } else { - } + if argv.IgnDisk { + log.Info("ignore dup disk", filename, disks[filename], d.Hostname) + } else { + } */ log.Info("file", filename, "on droplet", disks[filename]) log.Info("file", filename, "on droplet", d.Hostname) |
