Skip to content

Commit f010a60

Browse files
authored
Merge pull request #431 from kmala/reg
ref(controller): use the env config instead of directly getting from environment
2 parents 9172e9a + 3a6c891 commit f010a60

11 files changed

Lines changed: 89 additions & 28 deletions

File tree

boot.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func main() {
8181
log.Printf("Starting health check server on port %d", cnf.HealthSrvPort)
8282
healthSrvCh := make(chan error)
8383
go func() {
84-
if err := healthsrv.Start(cnf.HealthSrvPort, kubeClient.Namespaces(), storageDriver, circ); err != nil {
84+
if err := healthsrv.Start(cnf, kubeClient.Namespaces(), storageDriver, circ); err != nil {
8585
healthSrvCh <- err
8686
}
8787
}()
@@ -96,7 +96,7 @@ func main() {
9696
log.Printf("Starting SSH server on %s:%d", cnf.SSHHostIP, cnf.SSHHostPort)
9797
sshCh := make(chan int)
9898
go func() {
99-
sshCh <- pkg.RunBuilder(cnf.SSHHostIP, cnf.SSHHostPort, gitHomeDir, circ, pushLock)
99+
sshCh <- pkg.RunBuilder(cnf, gitHomeDir, circ, pushLock)
100100
}()
101101

102102
select {

pkg/builder.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ const (
2525
// Git.
2626
//
2727
// Run returns on of the Status* status code constants.
28-
func RunBuilder(sshHostIP string, sshHostPort int, gitHomeDir string, sshServerCircuit *sshd.Circuit, pushLock sshd.RepositoryLock) int {
29-
address := fmt.Sprintf("%s:%d", sshHostIP, sshHostPort)
30-
cfg, err := sshd.Configure()
28+
func RunBuilder(cnf *sshd.Config, gitHomeDir string, sshServerCircuit *sshd.Circuit, pushLock sshd.RepositoryLock) int {
29+
address := fmt.Sprintf("%s:%d", cnf.SSHHostIP, cnf.SSHHostPort)
30+
cfg, err := sshd.Configure(cnf)
3131
if err != nil {
3232
log.Err("SSH server configuration failed: %s", err)
3333
return StatusLocalError

pkg/conf/config.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
)
1111

1212
const (
13-
builderKeyLocation = "/var/run/secrets/api/auth/builder-key"
13+
BuilderKeyLocation = "/var/run/secrets/api/auth/builder-key"
1414
storageCredLocation = "/var/run/secrets/deis/objectstore/creds/"
1515
minioHostEnvVar = "DEIS_MINIO_SERVICE_HOST"
1616
minioPortEnvVar = "DEIS_MINIO_SERVICE_PORT"
@@ -36,10 +36,10 @@ func EnvConfig(appName string, conf interface{}) error {
3636
}
3737

3838
// GetBuilderKey returns the key to be used as token to interact with deis-controller
39-
func GetBuilderKey() (string, error) {
40-
builderKeyBytes, err := ioutil.ReadFile(builderKeyLocation)
39+
func GetBuilderKey(builderKeyPath string) (string, error) {
40+
builderKeyBytes, err := ioutil.ReadFile(builderKeyPath)
4141
if err != nil {
42-
return "", fmt.Errorf("couldn't get builder key from %s (%s)", builderKeyLocation, err)
42+
return "", fmt.Errorf("couldn't get builder key from %s (%s)", builderKeyPath, err)
4343
}
4444
builderKey := strings.Trim(string(builderKeyBytes), "\n")
4545
return builderKey, nil

pkg/conf/config_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"os/user"
77
"testing"
88

9+
"github.com/arschles/assert"
910
"github.com/deis/builder/pkg/sys"
1011
)
1112

@@ -64,3 +65,27 @@ func TestGetStorageParams(t *testing.T) {
6465
t.Errorf("received error while retrieving storage params: %v", err)
6566
}
6667
}
68+
69+
func TestGetControllerClient(t *testing.T) {
70+
tmpDir, err := ioutil.TempDir("", "tmpdir")
71+
if err != nil {
72+
t.Fatalf("error creating temp directory (%s)", err)
73+
}
74+
data := []byte("testbuilderkey")
75+
if err := ioutil.WriteFile(tmpDir+"/builder-key", data, 0644); err != nil {
76+
t.Fatalf("error creating %s/builder-key (%s)", tmpDir, err)
77+
}
78+
defer func() {
79+
if err := os.RemoveAll(tmpDir); err != nil {
80+
t.Fatalf("failed to remove builder-key from %s (%s)", tmpDir, err)
81+
}
82+
}()
83+
key, err := GetBuilderKey(tmpDir + "/builder-key")
84+
assert.NoErr(t, err)
85+
assert.Equal(t, key, string(data), "data")
86+
}
87+
88+
func TestGetBuilderKeyError(t *testing.T) {
89+
_, err := GetBuilderKey("/builder-key")
90+
assert.True(t, err != nil, "no error received when there should have been")
91+
}

pkg/controller/utils.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,22 @@ package controller
22

33
import (
44
"fmt"
5-
"os"
65

76
"github.com/deis/builder/pkg/conf"
87
deis "github.com/deis/controller-sdk-go"
98
"github.com/deis/pkg/log"
109
)
1110

12-
const (
13-
hostEnvName = "DEIS_CONTROLLER_SERVICE_HOST"
14-
portEnvName = "DEIS_CONTROLLER_SERVICE_PORT"
15-
)
16-
1711
// New creates a new SDK client configured as the builder.
18-
func New() (*deis.Client, error) {
19-
host := os.Getenv(hostEnvName)
20-
port := os.Getenv(portEnvName)
12+
func New(host, port, builderKeyPath string) (*deis.Client, error) {
2113

2214
client, err := deis.New(true, fmt.Sprintf("http://%s:%s/", host, port), "")
2315
if err != nil {
2416
return client, err
2517
}
2618
client.UserAgent = "deis-builder"
2719

28-
builderKey, err := conf.GetBuilderKey()
20+
builderKey, err := conf.GetBuilderKey(builderKeyPath)
2921
if err != nil {
3022
return client, err
3123
}

pkg/controller/utils_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package controller
2+
3+
import (
4+
"fmt"
5+
"io/ioutil"
6+
"os"
7+
"testing"
8+
9+
"github.com/arschles/assert"
10+
)
11+
12+
func TestGetControllerClient(t *testing.T) {
13+
tmpDir, err := ioutil.TempDir("", "tmpdir")
14+
if err != nil {
15+
t.Fatalf("error creating temp directory (%s)", err)
16+
}
17+
data := []byte("testbuilderkey")
18+
if err := ioutil.WriteFile(tmpDir+"/builder-key", data, 0644); err != nil {
19+
t.Fatalf("error creating %s/builder-key (%s)", tmpDir, err)
20+
}
21+
defer func() {
22+
if err := os.RemoveAll(tmpDir); err != nil {
23+
t.Fatalf("failed to remove builder-key from %s (%s)", tmpDir, err)
24+
}
25+
}()
26+
host := "127.0.0.1"
27+
port := "80"
28+
cli, err := New(host, port, tmpDir+"/builder-key")
29+
assert.NoErr(t, err)
30+
assert.Equal(t, cli.ControllerURL.String(), fmt.Sprintf("http://%s:%s/", host, port), "data")
31+
assert.Equal(t, cli.HooksToken, string(data), "data")
32+
}
33+
34+
func TestGetControllerClientError(t *testing.T) {
35+
host := "127.0.0.1"
36+
port := "80"
37+
_, err := New(host, port, "/builder-key")
38+
assert.True(t, err != nil, "no error received when there should have been")
39+
}

pkg/gitreceive/build.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"path/filepath"
1212
"strings"
1313

14+
builderconf "github.com/deis/builder/pkg/conf"
1415
"github.com/deis/builder/pkg/controller"
1516
"github.com/deis/builder/pkg/git"
1617
"github.com/deis/builder/pkg/k8s"
@@ -90,7 +91,7 @@ func build(
9091
}
9192
}()
9293

93-
client, err := controller.New()
94+
client, err := controller.New(conf.ControllerHost, conf.ControllerPort, builderconf.BuilderKeyLocation)
9495
if err != nil {
9596
return err
9697
}

pkg/gitreceive/run.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func readLine(line string) (string, string, string, error) {
2727
func Run(conf *Config, fs sys.FS, env sys.Env, storageDriver storagedriver.StorageDriver) error {
2828
log.Debug("Running git hook")
2929

30-
builderKey, err := builderconf.GetBuilderKey()
30+
builderKey, err := builderconf.GetBuilderKey(builderconf.BuilderKeyLocation)
3131
if err != nil {
3232
return err
3333
}

pkg/healthsrv/server.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,22 @@ import (
44
"fmt"
55
"net/http"
66

7+
builderconf "github.com/deis/builder/pkg/conf"
78
"github.com/deis/builder/pkg/controller"
89
"github.com/deis/builder/pkg/sshd"
910
)
1011

1112
// Start starts the healthcheck server on :$port and blocks. It only returns if the server fails,
1213
// with the indicative error.
13-
func Start(port int, nsLister NamespaceLister, bLister BucketLister, sshServerCircuit *sshd.Circuit) error {
14+
func Start(cnf *sshd.Config, nsLister NamespaceLister, bLister BucketLister, sshServerCircuit *sshd.Circuit) error {
1415
mux := http.NewServeMux()
15-
client, err := controller.New()
16+
client, err := controller.New(cnf.ControllerHost, cnf.ControllerPort, builderconf.BuilderKeyLocation)
1617
if err != nil {
1718
return err
1819
}
1920
mux.Handle("/healthz", healthZHandler(bLister, sshServerCircuit))
2021
mux.Handle("/readiness", readinessHandler(client, nsLister))
2122

22-
hostStr := fmt.Sprintf(":%d", port)
23+
hostStr := fmt.Sprintf(":%d", cnf.HealthSrvPort)
2324
return http.ListenAndServe(hostStr, mux)
2425
}

pkg/sshd/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66

77
// Config represents the required SSH server configuration.
88
type Config struct {
9+
ControllerHost string `envconfig:"DEIS_CONTROLLER_SERVICE_HOST" required:"true"`
10+
ControllerPort string `envconfig:"DEIS_CONTROLLER_SERVICE_PORT" required:"true"`
911
SSHHostIP string `envconfig:"SSH_HOST_IP" default:"0.0.0.0" required:"true"`
1012
SSHHostPort int `envconfig:"SSH_HOST_PORT" default:"2223" required:"true"`
1113
HealthSrvPort int `envconfig:"HEALTH_SERVER_PORT" default:"8092"`

0 commit comments

Comments
 (0)