Переглянути джерело

move urbit config to docker package

nallux 2 роки тому
батько
коміт
760a6fe121
2 змінених файлів з 50 додано та 31 видалено
  1. 17 15
      broadcast/broadcast.go
  2. 33 16
      docker/urbit.go

+ 17 - 15
broadcast/broadcast.go

@@ -7,11 +7,9 @@ import (
 	"goseg/docker"
 	"goseg/startram"
 	"goseg/structs"
-	"io/ioutil"
 	"log/slog"
 	"math"
 	"os"
-	"path/filepath"
 	"reflect"
 	"strings"
 	"sync"
@@ -123,20 +121,24 @@ func constructPierInfo(piers []string) (map[string]structs.Urbit, error) {
 	}
 	// convert the running status into bools
 	for pier, status := range pierStatus {
+		dockerConfig := docker.Conf(pier)
+		fmt.Println(dockerConfig)
 		// pull docker info from json
-		var dockerConfig structs.UrbitDocker
-		confPath := filepath.Join(config.BasePath, "settings", "pier", pier+".json")
-		file, err := ioutil.ReadFile(confPath)
-		if err != nil {
-			errmsg := fmt.Sprintf("Unable to load %s config: %v", pier, err)
-			logger.Error(errmsg)
-			continue
-		}
-		if err := json.Unmarshal(file, &dockerConfig); err != nil {
-			errmsg := fmt.Sprintf("Error decoding %s JSON: %v", pier, err)
-			logger.Error(errmsg)
-			continue
-		}
+		/*
+			var dockerConfig structs.UrbitDocker
+			confPath := filepath.Join(config.BasePath, "settings", "pier", pier+".json")
+			file, err := ioutil.ReadFile(confPath)
+			if err != nil {
+				errmsg := fmt.Sprintf("Unable to load %s config: %v", pier, err)
+				logger.Error(errmsg)
+				continue
+			}
+			if err := json.Unmarshal(file, &dockerConfig); err != nil {
+				errmsg := fmt.Sprintf("Error decoding %s JSON: %v", pier, err)
+				logger.Error(errmsg)
+				continue
+			}
+		*/
 		urbit := structs.Urbit{}
 		if existingUrbit, exists := currentState.Urbits[pier]; exists {
 			// If the ship already exists in broadcastState, use its current state

+ 33 - 16
docker/urbit.go

@@ -1,12 +1,19 @@
 package docker
 
 import (
+	"encoding/json"
 	"fmt"
 	"goseg/config"
+	"goseg/structs"
+	"io/ioutil"
+	"path/filepath"
 	"sync"
 )
 
-var urbits = make(map[string]*sync.Mutex)
+var (
+	urbitsConfig = make(map[string]structs.UrbitDocker)
+	urbitMutex   sync.RWMutex
+)
 
 func LoadUrbits() error {
 	logger.Info("Loading Urbit ships")
@@ -16,8 +23,8 @@ func LoadUrbits() error {
 	for _, pier := range conf.Piers {
 		// load config
 		if err := loadConfig(pier); err != nil {
-			errmsg := fmt.Sprintf("Unable to load config for %s: %v", patp, err)
-			logger.Error(errmsg)
+			logger.Error(fmt.Sprintf("%v", err))
+			continue
 		}
 	}
 	// apply latest version info (if automated updates)
@@ -25,19 +32,29 @@ func LoadUrbits() error {
 	return nil
 }
 
+func Conf(pier string) structs.UrbitDocker {
+	urbitMutex.Lock()
+	defer urbitMutex.Unlock()
+	return urbitsConfig[pier]
+}
+
 func loadConfig(pier string) error {
-	fmt.Println(pier)
-	/*
-		// try loading existing config
-		basePath, err := os.Getwd()
-		if err != nil {
-			errmsg := fmt.Sprintf("Couldn't get cwd: %v", err)
-			logger.Error(errmsg)
-		}
-		pierConf := fmt.Sprintf("%s.json", pier)
-		confPath := filepath.Join(basePath, "settings", "pier", pierConf)
-		file, err := os.Open(confPath)
-		defer file.Close()
-	*/
+	// pull docker info from json
+	confPath := filepath.Join(config.BasePath, "settings", "pier", pier+".json")
+	file, err := ioutil.ReadFile(confPath)
+	if err != nil {
+		errmsg := fmt.Sprintf("Unable to load %s config: %v", pier, err)
+		return fmt.Errorf(errmsg) // Return an error instead of a string
+	}
+	// Unmarshal JSON
+	var targetStruct structs.UrbitDocker
+	if err := json.Unmarshal(file, &targetStruct); err != nil {
+		errmsg := fmt.Sprintf("Error decoding %s JSON: %v", pier, err)
+		return fmt.Errorf(errmsg)
+	}
+	// Store in var
+	urbitMutex.Lock()
+	defer urbitMutex.Unlock()
+	urbitsConfig[pier] = targetStruct
 	return nil
 }