init machined cli

This commit is contained in:
Pavel Sviderski
2024-07-20 21:18:06 +10:00
parent c99cdcd95f
commit b4606b939b
9 changed files with 167 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
package daemon
import (
"encoding/json"
"fmt"
"os"
"path/filepath"
)
const (
DefaultDataDir = "/var/lib/uncloud"
MachineConfigPath = "machine.json"
)
type Config struct {
UncloudID string
UncloudSecret string
// IPv4 network in CIDR format to use for the machine network.
Network string
}
func ReadConfig(path string) (Config, error) {
data, err := os.ReadFile(path)
if err != nil {
return Config{}, fmt.Errorf("read config file %q: %w", path, err)
}
var config Config
if err = json.Unmarshal(data, &config); err != nil {
return Config{}, fmt.Errorf("parse config file %q: %w", path, err)
}
return config, nil
}
func (c *Config) Write(path string) error {
dir, _ := filepath.Split(path)
if err := os.MkdirAll(dir, 0700); err != nil {
return fmt.Errorf("create config directory %q: %w", dir, err)
}
data, err := json.Marshal(c)
if err != nil {
return fmt.Errorf("marshal config: %w", err)
}
return os.WriteFile(path, data, 0600)
}
+17
View File
@@ -0,0 +1,17 @@
package daemon
import (
"errors"
"fmt"
"path/filepath"
)
func Run(dataDir string) error {
cfg, err := ReadConfig(filepath.Join(dataDir, MachineConfigPath))
if err != nil {
return err
}
fmt.Println("Config", cfg)
return errors.New("Running daemon...")
}
+15
View File
@@ -0,0 +1,15 @@
package machine
import (
"fmt"
"path/filepath"
"uncloud/internal/machine/daemon"
)
func Install(dataDir string, cfg daemon.Config) error {
err := cfg.Write(filepath.Join(dataDir, daemon.MachineConfigPath))
if err == nil {
fmt.Println("Machine config created.")
}
return err
}