Skip to content

Commit

Permalink
Merge 7419cab into 1a68536
Browse files Browse the repository at this point in the history
  • Loading branch information
aledbf committed Sep 19, 2017
2 parents 1a68536 + 7419cab commit b8af095
Show file tree
Hide file tree
Showing 12 changed files with 344 additions and 320 deletions.
10 changes: 5 additions & 5 deletions controllers/nginx/pkg/cmd/controller/nginx.go
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ type NGINXController struct {

configmap *apiv1.ConfigMap

storeLister ingress.StoreLister
storeLister *ingress.StoreLister

binary string
resolver []net.IP
Expand Down Expand Up @@ -463,7 +463,7 @@ func (n *NGINXController) SetConfig(cmap *apiv1.ConfigMap) {
}

// SetListers sets the configured store listers in the generic ingress controller
func (n *NGINXController) SetListers(lister ingress.StoreLister) {
func (n *NGINXController) SetListers(lister *ingress.StoreLister) {
n.storeLister = lister
}

Expand Down Expand Up @@ -591,7 +591,7 @@ func (n *NGINXController) OnUpdate(ingressCfg ingress.Configuration) error {

setHeaders := map[string]string{}
if cfg.ProxySetHeaders != "" {
cmap, exists, err := n.storeLister.ConfigMap.GetByKey(cfg.ProxySetHeaders)
cmap, exists, err := n.storeLister.ConfigMaps.GetByKey(cfg.ProxySetHeaders)
if err != nil {
glog.Warningf("unexpected error reading configmap %v: %v", cfg.ProxySetHeaders, err)
}
Expand All @@ -603,7 +603,7 @@ func (n *NGINXController) OnUpdate(ingressCfg ingress.Configuration) error {

addHeaders := map[string]string{}
if cfg.AddHeaders != "" {
cmap, exists, err := n.storeLister.ConfigMap.GetByKey(cfg.AddHeaders)
cmap, exists, err := n.storeLister.ConfigMaps.GetByKey(cfg.AddHeaders)
if err != nil {
glog.Warningf("unexpected error reading configmap %v: %v", cfg.AddHeaders, err)
}
Expand All @@ -616,7 +616,7 @@ func (n *NGINXController) OnUpdate(ingressCfg ingress.Configuration) error {
sslDHParam := ""
if cfg.SSLDHParam != "" {
secretName := cfg.SSLDHParam
s, exists, err := n.storeLister.Secret.GetByKey(secretName)
s, exists, err := n.storeLister.Secrets.GetByKey(secretName)
if err != nil {
glog.Warningf("unexpected error reading secret %v: %v", secretName, err)
}
Expand Down
38 changes: 16 additions & 22 deletions controllers/nginx/pkg/template/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,9 @@ const (

// Template ...
type Template struct {
tmpl *text_template.Template
fw watch.FileWatcher
s int
tmplBuf *bytes.Buffer
outCmdBuf *bytes.Buffer
tmpl *text_template.Template
fw watch.FileWatcher
s int
}

//NewTemplate returns a new Template instance or an
Expand All @@ -69,11 +67,9 @@ func NewTemplate(file string, onChange func()) (*Template, error) {
}

return &Template{
tmpl: tmpl,
fw: fw,
s: defBufferSize,
tmplBuf: bytes.NewBuffer(make([]byte, 0, defBufferSize)),
outCmdBuf: bytes.NewBuffer(make([]byte, 0, defBufferSize)),
tmpl: tmpl,
fw: fw,
s: defBufferSize,
}, nil
}

Expand All @@ -85,15 +81,13 @@ func (t *Template) Close() {
// Write populates a buffer using a template with NGINX configuration
// and the servers and upstreams created by Ingress rules
func (t *Template) Write(conf config.TemplateConfig) ([]byte, error) {
defer t.tmplBuf.Reset()
defer t.outCmdBuf.Reset()
tmplBuf := bytes.NewBuffer(make([]byte, 0, t.s))
outCmdBuf := bytes.NewBuffer(make([]byte, 0, t.s))

defer func() {
if t.s < t.tmplBuf.Cap() {
glog.V(2).Infof("adjusting template buffer size from %v to %v", t.s, t.tmplBuf.Cap())
t.s = t.tmplBuf.Cap()
t.tmplBuf = bytes.NewBuffer(make([]byte, 0, t.tmplBuf.Cap()))
t.outCmdBuf = bytes.NewBuffer(make([]byte, 0, t.outCmdBuf.Cap()))
if t.s < tmplBuf.Cap() {
glog.V(2).Infof("adjusting template buffer size from %v to %v", t.s, tmplBuf.Cap())
t.s = tmplBuf.Cap()
}
}()

Expand All @@ -105,22 +99,22 @@ func (t *Template) Write(conf config.TemplateConfig) ([]byte, error) {
glog.Infof("NGINX configuration: %v", string(b))
}

err := t.tmpl.Execute(t.tmplBuf, conf)
err := t.tmpl.Execute(tmplBuf, conf)
if err != nil {
return nil, err
}

// squeezes multiple adjacent empty lines to be single
// spaced this is to avoid the use of regular expressions
cmd := exec.Command("/ingress-controller/clean-nginx-conf.sh")
cmd.Stdin = t.tmplBuf
cmd.Stdout = t.outCmdBuf
cmd.Stdin = tmplBuf
cmd.Stdout = outCmdBuf
if err := cmd.Run(); err != nil {
glog.Warningf("unexpected error cleaning template: %v", err)
return t.tmplBuf.Bytes(), nil
return tmplBuf.Bytes(), nil
}

return t.outCmdBuf.Bytes(), nil
return outCmdBuf.Bytes(), nil
}

var (
Expand Down
6 changes: 1 addition & 5 deletions core/pkg/ingress/controller/backend_ssl.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,11 @@ func (ic *GenericController) syncSecret(key string) {
// getPemCertificate receives a secret, and creates a ingress.SSLCert as return.
// It parses the secret and verifies if it's a keypair, or a 'ca.crt' secret only.
func (ic *GenericController) getPemCertificate(secretName string) (*ingress.SSLCert, error) {
secretInterface, exists, err := ic.secrLister.Store.GetByKey(secretName)
secret, err := ic.listers.Secrets.GetByName(secretName)
if err != nil {
return nil, fmt.Errorf("error retrieving secret %v: %v", secretName, err)
}
if !exists {
return nil, fmt.Errorf("secret named %v does not exist", secretName)
}

secret := secretInterface.(*apiv1.Secret)
cert, okcert := secret.Data[apiv1.TLSCertKey]
key, okkey := secret.Data[apiv1.TLSPrivateKeyKey]

Expand Down
14 changes: 10 additions & 4 deletions core/pkg/ingress/controller/backend_ssl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,13 @@ func buildSecrListerForBackendSSL() store.SecretLister {
return secrLister
}

func buildListers() *ingress.StoreLister {
sl := &ingress.StoreLister{}
sl.Ingresses.Store = buildIngListenerForBackendSSL()
sl.Secrets.Store = buildSecrListerForBackendSSL()
return sl
}

func buildControllerForBackendSSL() cache_client.Controller {
cfg := &cache_client.Config{
Queue: &MockQueue{Synced: true},
Expand All @@ -99,8 +106,7 @@ func buildGenericControllerForBackendSSL() *GenericController {
cfg: &Configuration{
Client: buildSimpleClientSetForBackendSSL(),
},
ingLister: buildIngListenerForBackendSSL(),
secrLister: buildSecrListerForBackendSSL(),
listers: buildListers(),

ingController: buildControllerForBackendSSL(),
endpController: buildControllerForBackendSSL(),
Expand Down Expand Up @@ -162,7 +168,7 @@ func TestSyncSecret(t *testing.T) {
secret.SetNamespace("default")
secret.SetName("foo_secret")
secret.Data = foo.Data
ic.secrLister.Add(secret)
ic.listers.Secrets.Add(secret)

key := "default/foo_secret"
// for add
Expand Down Expand Up @@ -209,7 +215,7 @@ func TestGetPemCertificate(t *testing.T) {
ic := buildGenericControllerForBackendSSL()
secret := buildSecretForBackendSSL()
secret.Data = foo.Data
ic.secrLister.Add(secret)
ic.listers.Secrets.Add(secret)
sslCert, err := ic.getPemCertificate(foo.secretName)

if foo.eErr {
Expand Down
Loading

0 comments on commit b8af095

Please sign in to comment.