mirror of
https://github.com/hanzoai/volume.git
synced 2026-10-01 00:48:00 +00:00
A fork of Rancher's local-path-provisioner at v0.0.36. The behaviour is unchanged and deliberately so — a directory on the node a pod lands on is the right thing for a disk. What changes is identity. The provisioner answers to hanzo.ai/volume rather than rancher.io/local-path. That is not branding: two provisioners sharing one name race for the same claims, and a stock k3s carries the upstream one, so a cluster running both would settle our storage by chance. Data lives at /var/lib/hanzo/volume, so reading a Hanzo cluster does not mean learning another vendor's directory. Apache-2.0 as published, unaltered, with Rancher's attribution in NOTICE. The README says what this is not: durability. A volume here dies with its node. That is hanzoai/replicate's question, one layer up, and keeping the two apart is what lets the disk stay this simple.
64 lines
1.1 KiB
Go
64 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"syscall"
|
|
)
|
|
|
|
var (
|
|
dirMode string
|
|
path string
|
|
sizeInBytes string
|
|
action string
|
|
)
|
|
|
|
const (
|
|
SETUP = "create"
|
|
TEARDOWN = "delete"
|
|
)
|
|
|
|
func init() {
|
|
flag.StringVar(&path, "p", "", "Absolute path")
|
|
flag.StringVar(&sizeInBytes, "s", "", "Size in bytes")
|
|
flag.StringVar(&dirMode, "m", "", "Dir mode")
|
|
flag.StringVar(&action, "a", "", fmt.Sprintf("Action name. Can be '%s' or '%s'", SETUP, TEARDOWN))
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
if action != SETUP && action != TEARDOWN {
|
|
fmt.Fprintf(os.Stderr, "Incorrect action: %s\n", action)
|
|
os.Exit(1)
|
|
}
|
|
|
|
if path == "" {
|
|
fmt.Fprintf(os.Stderr, "Path is empty\n")
|
|
os.Exit(1)
|
|
}
|
|
|
|
if path == "/" {
|
|
fmt.Fprintf(os.Stderr, "Path cannot be '/'\n")
|
|
os.Exit(1)
|
|
}
|
|
|
|
if action == TEARDOWN {
|
|
err := os.RemoveAll(path)
|
|
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "Cannot remove directory %s: %s\n", path, err)
|
|
os.Exit(1)
|
|
}
|
|
return
|
|
}
|
|
|
|
syscall.Umask(0)
|
|
|
|
err := os.MkdirAll(path, 0777)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "Cannot create directory %s: %s\n", path, err)
|
|
os.Exit(1)
|
|
}
|
|
}
|