From 44ea514e15fa6208ce28ccc647f40db80a20b0c7 Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Mon, 21 Aug 2023 17:51:44 +0000 Subject: [PATCH] zones: WIP Signed-off-by: Alejandro Mery --- pkg/zones/machines.go | 7 +++++++ pkg/zones/scan.go | 29 +++++++++++++++++++++++++++++ pkg/zones/zones.go | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 pkg/zones/machines.go create mode 100644 pkg/zones/scan.go create mode 100644 pkg/zones/zones.go diff --git a/pkg/zones/machines.go b/pkg/zones/machines.go new file mode 100644 index 0000000..ed446e8 --- /dev/null +++ b/pkg/zones/machines.go @@ -0,0 +1,7 @@ +package zones + +// A Machine is a machine on a Zone +type Machine struct { + zone *Zone + name string +} diff --git a/pkg/zones/scan.go b/pkg/zones/scan.go new file mode 100644 index 0000000..37bfbbd --- /dev/null +++ b/pkg/zones/scan.go @@ -0,0 +1,29 @@ +package zones + +import ( + "io/fs" + "log" +) + +func (m *Zones) scan() error { + var zones []Zone + + // each directory is a zone + entries, err := fs.ReadDir(m.dir, ".") + if err != nil { + return err + } + + for _, e := range entries { + if e.IsDir() { + z := Zone{ + zones: m, + name: e.Name(), + } + + log.Print(z) + zones = append(zones, z) + } + } + return nil +} diff --git a/pkg/zones/zones.go b/pkg/zones/zones.go new file mode 100644 index 0000000..2d2ae3c --- /dev/null +++ b/pkg/zones/zones.go @@ -0,0 +1,39 @@ +package zones + +import ( + "io/fs" + "os" +) + +// Zone represents one zone in a cluster +type Zone struct { + zones *Zones + + id int + name string +} + +// Zones represents all zones in a cluster +type Zones struct { + dir fs.FS + + zones []Zone +} + +// NewFS builds a [Zones] tree using the given directory +func NewFS(dir fs.FS) (*Zones, error) { + z := &Zones{ + dir: dir, + } + + if err := z.scan(); err != nil { + return nil, err + } + + return z, nil +} + +// New builds a [Zones] tree using the given directory +func New(dir string) (*Zones, error) { + return NewFS(os.DirFS(dir)) +}