Merge pull request #3503 from hashicorp/porter-ci

Makes porter clean up if a porter instance died.
This commit is contained in:
James Phillips 2017-09-26 16:30:27 -07:00 committed by GitHub
commit 47d0ad8928
1 changed files with 18 additions and 13 deletions

View File

@ -39,20 +39,22 @@ func main() {
flag.Parse() flag.Parse()
// check if there is an instance running // check if there is an instance running
startServer := true
b, err := ioutil.ReadFile(addrFile) b, err := ioutil.ReadFile(addrFile)
switch { if err == nil {
// existing instance but no command to run
case err == nil && len(flag.Args()) == 0:
log.Println("porter already running on", string(b))
os.Exit(0)
// existing instance with command to run
case err == nil:
addr = string(b) addr = string(b)
log.Println("re-using porter instance on", addr) conn, err := net.Dial("tcp", addr)
if err == nil {
log.Println("found running porter instance at", addr)
startServer = false
conn.Close()
} else {
log.Printf("found dead porter instance at %s, will take over", addr)
}
}
// new instance args := flag.Args()
case os.IsNotExist(err): if startServer {
if err := ioutil.WriteFile(addrFile, []byte(addr), 0644); err != nil { if err := ioutil.WriteFile(addrFile, []byte(addr), 0644); err != nil {
log.Fatalf("Cannot write %s: %s", addrFile, err) log.Fatalf("Cannot write %s: %s", addrFile, err)
} }
@ -63,10 +65,13 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
}() }()
} else {
if len(args) == 0 {
log.Println("no command and existing porter instance found, exiting")
os.Exit(0)
}
} }
args := flag.Args()
// no command to run: wait for CTRL-C // no command to run: wait for CTRL-C
if len(args) == 0 { if len(args) == 0 {
log.Print("PORTER_ADDR=" + addr) log.Print("PORTER_ADDR=" + addr)