forked from External/grumble
Make servers reside in the 'servers' subdir of the DataDir.
This commit is contained in:
parent
9ee6172b04
commit
a22606e8bf
2 changed files with 50 additions and 31 deletions
|
|
@ -36,7 +36,7 @@ func (server *Server) FreezeToFile() (err error) {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
f, err := ioutil.TempFile(filepath.Join(Args.DataDir, strconv.Itoa64(server.Id)), ".main.fz_")
|
||||
f, err := ioutil.TempFile(filepath.Join(Args.DataDir, "servers", strconv.Itoa64(server.Id)), ".main.fz_")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -56,7 +56,7 @@ func (server *Server) FreezeToFile() (err error) {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = os.Rename(f.Name(), filepath.Join(Args.DataDir, strconv.Itoa64(server.Id), "main.fz"))
|
||||
err = os.Rename(f.Name(), filepath.Join(Args.DataDir, "servers", strconv.Itoa64(server.Id), "main.fz"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
@ -72,7 +72,7 @@ func (server *Server) FreezeToFile() (err error) {
|
|||
|
||||
// Open a new freeze log
|
||||
func (server *Server) openFreezeLog() (err error) {
|
||||
logfn := filepath.Join(Args.DataDir, strconv.Itoa64(server.Id), "log.fz")
|
||||
logfn := filepath.Join(Args.DataDir, "servers", strconv.Itoa64(server.Id), "log.fz")
|
||||
err = os.Remove(logfn)
|
||||
if pe, ok := err.(*os.PathError); ok && pe.Err == os.ENOENT {
|
||||
// OK. File does not exist...
|
||||
|
|
@ -390,7 +390,7 @@ func NewServerFromFrozen(name string) (s *Server, err error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
path := filepath.Join(Args.DataDir, name)
|
||||
path := filepath.Join(Args.DataDir, "servers", name)
|
||||
mainFile := filepath.Join(path, "main.fz")
|
||||
logFile := filepath.Join(path, "log.fz")
|
||||
|
||||
|
|
|
|||
73
grumble.go
73
grumble.go
|
|
@ -26,26 +26,25 @@ func main() {
|
|||
return
|
||||
}
|
||||
|
||||
err = logtarget.Target.OpenFile(Args.LogPath)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Unable to open log file: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
log.SetPrefix("[G] ")
|
||||
log.SetFlags(log.LstdFlags | log.Lmicroseconds)
|
||||
log.SetOutput(&logtarget.Target)
|
||||
log.Printf("Grumble")
|
||||
log.Printf("Using data directory: %s", Args.DataDir)
|
||||
|
||||
// Open the data dir. We need it later for looking up
|
||||
// the virtual server folders in the data dir.
|
||||
// We need it now to make sure the data dir actually exists.
|
||||
// Open the data dir to check whether it exists.
|
||||
dataDir, err := os.Open(Args.DataDir)
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to open data directory: %v", err)
|
||||
return
|
||||
}
|
||||
dataDir.Close()
|
||||
|
||||
// Set up logging
|
||||
err = logtarget.Target.OpenFile(Args.LogPath)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Unable to open log file: %v", err)
|
||||
return
|
||||
}
|
||||
log.SetPrefix("[G] ")
|
||||
log.SetFlags(log.LstdFlags | log.Lmicroseconds)
|
||||
log.SetOutput(&logtarget.Target)
|
||||
log.Printf("Grumble")
|
||||
log.Printf("Using data directory: %s", Args.DataDir)
|
||||
|
||||
// Open the blobstore. If the directory doesn't
|
||||
// already exist, create the directory and open
|
||||
|
|
@ -164,17 +163,34 @@ func main() {
|
|||
return
|
||||
}
|
||||
|
||||
// Run the SSH admin console.
|
||||
RunSSH()
|
||||
// Create the servers directory if it doesn't already
|
||||
// exist.
|
||||
serversDirPath := filepath.Join(Args.DataDir, "servers")
|
||||
err = os.Mkdir(serversDirPath, 0700)
|
||||
if err != nil {
|
||||
exists := false
|
||||
if e, ok := err.(*os.PathError); ok {
|
||||
if e.Err == os.EEXIST {
|
||||
exists = true
|
||||
}
|
||||
}
|
||||
if !exists {
|
||||
log.Fatal("Unable to create servers directory: %v", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// Read all entries of the data directory.
|
||||
// Read all entries of the servers directory.
|
||||
// We need these to load our virtual servers.
|
||||
names, err := dataDir.Readdirnames(-1)
|
||||
serversDir, err := os.Open(serversDirPath)
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to open the servers directory: %v", err.Error())
|
||||
}
|
||||
names, err := serversDir.Readdirnames(-1)
|
||||
if err != nil {
|
||||
log.Fatal("Unable to read file from data directory: %v", err.Error())
|
||||
}
|
||||
// The data dir file descriptor.
|
||||
err = dataDir.Close()
|
||||
err = serversDir.Close()
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to close data directory: %v", err.Error())
|
||||
return
|
||||
|
|
@ -195,10 +211,6 @@ func main() {
|
|||
log.Fatalf("Unable to freeze server to disk: %v", err.Error())
|
||||
}
|
||||
servers[s.Id] = s
|
||||
err = s.Start()
|
||||
if err != nil {
|
||||
log.Printf("Unable to start server %v: %v", s.Id, err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -210,14 +222,21 @@ func main() {
|
|||
}
|
||||
|
||||
servers[s.Id] = s
|
||||
os.Mkdir(filepath.Join(Args.DataDir, fmt.Sprintf("%v", 1)), 0750)
|
||||
os.Mkdir(filepath.Join(serversDirPath, fmt.Sprintf("%v", 1)), 0750)
|
||||
err = s.FreezeToFile()
|
||||
if err != nil {
|
||||
log.Fatalf("Unable to freeze newly created server to disk: %v", err.Error())
|
||||
}
|
||||
err = s.Start()
|
||||
}
|
||||
|
||||
// Run the SSH admin console.
|
||||
RunSSH()
|
||||
|
||||
// Launch the servers we found during launch...
|
||||
for _, server := range servers {
|
||||
err = server.Start()
|
||||
if err != nil {
|
||||
log.Fatal("Unable to start newly created server: %v", err.Error())
|
||||
log.Printf("Unable to start server %v: %v", server.Id, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue