/
main.go
158 lines (139 loc) · 43.1 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
"os/exec"
"path"
"strings"
"github.com/pivotal-cf/brokerapi"
"github.com/pivotal-golang/lager"
)
type DiegoServiceBroker struct{}
type VCAP_Application struct {
ApplicationID string `json:"application_id"`
ApplicationName string `json:"application_name"`
ApplicationUris []string `json:"application_uris"`
ApplicationVersion string `json:"application_version"`
Host string `json:"host"`
InstanceID string `json:"instance_id"`
InstanceIndex int `json:"instance_index"`
Limits struct {
Disk int `json:"disk"`
Fds int `json:"fds"`
Mem int `json:"mem"`
} `json:"limits"`
Name string `json:"name"`
Port int `json:"port"`
SpaceID string `json:"space_id"`
SpaceName string `json:"space_name"`
Start string `json:"start"`
StartedAt string `json:"started_at"`
StartedAtTimestamp int `json:"started_at_timestamp"`
StateTimestamp int `json:"state_timestamp"`
Uris []string `json:"uris"`
Users interface{} `json:"users"`
Version string `json:"version"`
}
func (*myServiceBroker) Services() []brokerapi.Service {
return []brokerapi.Service{
brokerapi.Service{
ID: "5b743790-a1f8-4fd3-99c1-fa97aba0f702",
Name: "p-diego",
Description: "Push docker images for services and bind your applications to them",
Tags: []string{"diego", "docker", "experimental", "epehmeral", "services"},
Bindable: true,
Plans: []brokerapi.ServicePlan{
brokerapi.ServicePlan{
ID: "C38EBF45-CEC1-499D-9464-EB333E70D908",
Name: "experimental",
Description: "This plan pushes Docker images specified as an arbitrary param to diego",
Metadata: brokerapi.ServicePlanMetadata{
DisplayName: "Diego",
Bullets: []string{
"This is an experiment",
"You will lose your data!",
"But it is super awesome!",
},
},
},
},
Metadata: brokerapi.ServiceMetadata{
DisplayName: "Docker Image service broker",
SupportUrl: "https://google.com",
DocumentationUrl: "http://lmgtfy.com/docker",
Provider: brokerapi.ServiceMetadataProvider{
Name: "Ben Laplanche",
},
Listing: brokerapi.ServiceMetadataListing{
ImageUrl: "data:image/png;base64, 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",
},
},
},
}
}
func (*myServiceBroker) Provision(instanceID string, serviceDetails brokerapi.ServiceDetails) error {
// Provision a new instance here
cfLogin()
return nil
}
func (*myServiceBroker) Deprovision(instanceID string) error {
// Deprovision instances here
return nil
}
func (*myServiceBroker) Bind(instanceID, bindingID string) (interface{}, error) {
// Bind to instances here
// Return credentials which will be marshalled to JSON
return nil, nil
}
func (*myServiceBroker) Unbind(instanceID, bindingID string) error {
// Unbind from instances here
return nil
}
func main() {
var port string
serviceBroker := &myServiceBroker{}
logger := lager.NewLogger("my-service-broker")
credentials := brokerapi.BrokerCredentials{
Username: "blah",
Password: "password",
}
port = os.Getenv("VCAP_APP_PORT")
brokerAPI := brokerapi.New(serviceBroker, logger, credentials)
http.Handle("/", brokerAPI)
http.ListenAndServe("0.0.0.0:"+port, nil)
}
func cfLogin() {
apiurl := apiURL()
user := os.Getenv("CF_USERNAME")
password := os.Getenv("CF_PASSWORD")
fmt.Println(os.Getwd())
out, _ := exec.Command("chmod", "777", "assets/pcf").Output()
fmt.Println(string(out[:]))
out, _ = exec.Command("ls", "-alh", "/tmp").Output()
fmt.Println(string(out[:]))
cmd, err := exec.Command(path.Join("/home/vcap/app/assets/", "pcf"), "install-plugin", path.Join("/home/vcap/app/assets/", "diego-plugin")).Output()
fmt.Println(string(cmd[:]))
fmt.Println(err)
cmd, err = exec.Command(path.Join("/home/vcap/app/assets/", "pcf"), "login", "-a", apiurl, "-u", user, "-p", password, "-o", "development", "-s", "development", "--skip-ssl-validation").Output()
fmt.Println(string(cmd[:]))
fmt.Println(err)
cmd, err = exec.Command(path.Join("/home/vcap/app/assets/", "pcf"), "docker-push", "redis-blah", "ldmberman/redis-diego").Output()
fmt.Println(string(cmd[:]))
fmt.Println(err)
}
func apiURL() string {
var vcap VCAP_Application
vcap_application := os.Getenv("VCAP_APPLICATION")
if err := json.Unmarshal([]byte(vcap_application), &vcap); err == nil {
fmt.Println(vcap.ApplicationUris)
uri := vcap.ApplicationUris[0]
split := strings.Split(uri, ".")
split[0] = "api"
apiUrl := strings.Join(split, ".")
ret := "https://" + apiUrl
return ret
}
return ""
}