~juju-qa/ubuntu/yakkety/juju/2.0-rc3-again

« back to all changes in this revision

Viewing changes to src/launchpad.net/goose/testservices/cmd/main.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-04-24 22:34:47 UTC
  • Revision ID: package-import@ubuntu.com-20130424223447-f0qdji7ubnyo0s71
Tags: upstream-1.10.0.1
ImportĀ upstreamĀ versionĀ 1.10.0.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package main
 
2
 
 
3
import (
 
4
        "fmt"
 
5
        "launchpad.net/gnuflag"
 
6
        "launchpad.net/goose/testservices/identityservice"
 
7
        "log"
 
8
        "net/http"
 
9
        "strings"
 
10
)
 
11
 
 
12
type userInfo struct {
 
13
        user, secret string
 
14
}
 
15
type userValues struct {
 
16
        users []userInfo
 
17
}
 
18
 
 
19
func (uv *userValues) Set(s string) error {
 
20
        vals := strings.Split(s, ":")
 
21
        if len(vals) != 2 {
 
22
                return fmt.Errorf("Invalid --user option, should be: user:secret")
 
23
        }
 
24
        uv.users = append(uv.users, userInfo{
 
25
                user:   vals[0],
 
26
                secret: vals[1],
 
27
        })
 
28
        return nil
 
29
}
 
30
func (uv *userValues) String() string {
 
31
        return fmt.Sprintf("%v", uv.users)
 
32
}
 
33
 
 
34
var provider = gnuflag.String("provider", "userpass", "provide the name of the identity service to run")
 
35
 
 
36
var serveAddr = gnuflag.String("addr", "localhost:8080", "serve the provider on the given address.")
 
37
 
 
38
var users userValues
 
39
 
 
40
func init() {
 
41
 
 
42
        gnuflag.Var(&users, "user", "supply to add a user to the identity provider. Can be supplied multiple times. Should be of the form \"user:secret:token\".")
 
43
}
 
44
 
 
45
var providerMap = map[string]identityservice.IdentityService{
 
46
        "legacy":   identityservice.NewLegacy(),
 
47
        "userpass": identityservice.NewUserPass(),
 
48
}
 
49
 
 
50
func providers() []string {
 
51
        out := make([]string, 0, len(providerMap))
 
52
        for provider := range providerMap {
 
53
                out = append(out, provider)
 
54
        }
 
55
        return out
 
56
}
 
57
 
 
58
func main() {
 
59
        gnuflag.Parse(true)
 
60
        p, ok := providerMap[*provider]
 
61
        if !ok {
 
62
                log.Fatalf("No such provider: %s, pick one of: %v", provider, providers())
 
63
        }
 
64
        mux := http.NewServeMux()
 
65
        p.SetupHTTP(mux)
 
66
        for _, u := range users.users {
 
67
                p.AddUser(u.user, u.secret, "tenant")
 
68
        }
 
69
        log.Fatal(http.ListenAndServe(*serveAddr, mux))
 
70
}