gifs/api

Paddy 2014-10-17

7:21787ed8a185 Go to Latest

gifs/api/gifsd/server.go

Create a Dockerfile and binary. Write a Dockerfile that compiles everything and runs it. Start the binary; load a Context from etcd, and start everything running. The binary is pretty useless until we get HTTP handlers, though, obviously.

History
1 package main
3 import (
4 "flag"
5 "fmt"
6 "log"
7 "os"
8 "strings"
10 "github.com/coreos/go-etcd/etcd"
11 )
13 var (
14 etcdAddrs = StringArray{}
15 )
17 type StringArray []string
19 func (a *StringArray) Set(s string) error {
20 *a = append(*a, s)
21 return nil
22 }
24 func (a *StringArray) String() string {
25 return strings.Join(*a, ",")
26 }
28 func main() {
29 flag.Var(&etcdAddrs, "etcd-address", "address to the etcd server (may be specified more than once)")
30 flag.Parse()
31 if len(etcdAddrs) < 1 {
32 if os.Getenv("ETCD_NAME") != "" {
33 etcdAddrs = []string{"http://etcd:" + os.Getenv("ETCD_PORT_4001_TCP_PORT") + "/"}
34 } else {
35 flag.Usage()
36 return
37 }
38 }
39 log.Println("Using etcd servers", etcdAddrs)
40 client := etcd.NewClient(etcdAddrs)
41 resp, err := client.Get("/code.secondbit.org/gifs/api/", false, true)
42 if err != nil {
43 log.Fatalln(err)
44 return
45 }
46 context, err := getEtcdContext(resp.Node)
47 if err != nil {
48 log.Fatalln(err)
49 return
50 }
51 err = context.Validate()
52 if err != nil {
53 log.Fatalln(err)
54 return
55 }
56 listenAddr := ":8080"
57 for _, node := range resp.Node.Nodes {
58 if node.Key == "/listen_addr" {
59 listenAddr = node.Value
60 fmt.Println("Set listenAddr to " + node.Value)
61 break
62 }
63 }
64 log.Println("Going to listen on", listenAddr)
66 /*
67 var router *mux.Router
68 if context.RootDomain == "" {
69 fmt.Println("Using path muxer")
70 router = api.GetPathMuxer(context)
71 } else {
72 fmt.Println("Using domain muxer")
73 router = api.GetDomainMuxer(context)
74 }
75 http.Handle("/", router)
76 fmt.Println("Listening on " + listenAddr)
77 err = http.ListenAndServe(listenAddr, nil)
78 if err != nil {
79 panic(err)
80 }
81 */
82 }