summaryrefslogtreecommitdiff
path: root/validate.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-10-25 20:05:04 -0500
committerJeff Carr <[email protected]>2024-10-25 20:05:04 -0500
commitb35c04414a96ce62e19ff31649a09ba0c2cc45b6 (patch)
tree146ffcbb8b3164d0433269b2a74430a40287769a /validate.go
parent030af1bcfb7dad880a9fdf4286432fc36d1bf251 (diff)
checking for duplicate filenames works
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'validate.go')
-rw-r--r--validate.go52
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)