Skip to content
This repository has been archived by the owner on Sep 15, 2022. It is now read-only.

Commit

Permalink
Implement templating from secret (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
polskikiel authored Aug 26, 2019
1 parent 082e2dc commit 99e41f3
Show file tree
Hide file tree
Showing 20 changed files with 383 additions and 57 deletions.
7 changes: 4 additions & 3 deletions internal/addon/provider/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,17 @@ func (d *Client) Cleanup() error {

// GetCompleteAddon returns a addon with his charts as AddonWithCharts instance.
func (d *Client) GetCompleteAddon(entry internal.IndexEntry) (internal.AddonWithCharts, error) {
b, c, err := d.loadAddonAndCharts(entry.Name, entry.Version)
a, c, err := d.loadAddonAndCharts(entry.Name, entry.Version)
if err != nil {
return internal.AddonWithCharts{}, errors.Wrapf(err, "while loading addon %v", entry.Name)
}
b.RepositoryURL, err = d.concreteGetter.AddonDocURL(entry.Name, entry.Version)
a.RepositoryURL, err = d.concreteGetter.AddonDocURL(entry.Name, entry.Version)
if err != nil {
return internal.AddonWithCharts{}, errors.Wrapf(err, "while getting Docs URL for addon %v", entry.Name)
}

return internal.AddonWithCharts{
Addon: b,
Addon: a,
Charts: c,
}, nil
}
Expand Down
4 changes: 0 additions & 4 deletions internal/addon/provider/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,6 @@ func (cli *ClientFactory) NewGetter(rawURL, instPath string) (AddonClient, error
return nil, err
}

if fullRealAddr != rawURL {
cli.log.Infof("[TRACE] go-getter detectors rewrote %q to %q", rawURL, fullRealAddr)
}

// get schema + source address
fullRealAddrURL, err := url.Parse(fullRealAddr)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions internal/controller/addons_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ type ReconcileAddonsConfiguration struct {
}

// NewReconcileAddonsConfiguration returns a new reconcile.Reconciler
func NewReconcileAddonsConfiguration(mgr manager.Manager, addonGetterFactory addonGetterFactory, chartStorage chartStorage, addonStorage addonStorage, brokerFacade brokerFacade, docsProvider docsProvider, brokerSyncer brokerSyncer, tmpDir string, log logrus.FieldLogger) reconcile.Reconciler {
func NewReconcileAddonsConfiguration(mgr manager.Manager, addonGetterFactory addonGetterFactory, chartStorage chartStorage, addonStorage addonStorage, brokerFacade brokerFacade, docsProvider docsProvider, brokerSyncer brokerSyncer, templateService templateService, tmpDir string, log logrus.FieldLogger) reconcile.Reconciler {
return &ReconcileAddonsConfiguration{
log: log.WithField("controller", "addons"),
Client: mgr.GetClient(),

common: newControllerCommon(mgr.GetClient(), addonGetterFactory, addonStorage, chartStorage, docsProvider, brokerSyncer, brokerFacade, path.Join(tmpDir, "addon-loader-dst"), log),
common: newControllerCommon(mgr.GetClient(), addonGetterFactory, addonStorage, chartStorage, docsProvider, brokerSyncer, brokerFacade, templateService, path.Join(tmpDir, "addon-loader-dst"), log),
}
}

Expand Down
20 changes: 12 additions & 8 deletions internal/controller/addons_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/kubernetes-incubator/service-catalog/pkg/apis/servicecatalog/v1beta1"
"github.com/kyma-project/helm-broker/internal"
"github.com/kyma-project/helm-broker/internal/controller/automock"
"github.com/kyma-project/helm-broker/internal/controller/repository"
"github.com/kyma-project/helm-broker/internal/platform/logger/spy"
"github.com/kyma-project/helm-broker/internal/storage"
"github.com/kyma-project/helm-broker/pkg/apis"
Expand Down Expand Up @@ -60,7 +61,7 @@ func TestReconcileAddonsConfiguration_AddAddonsProcess(t *testing.T) {
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, tmpDir, spy.NewLogDummy())
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, tmpDir, spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Namespace: fixAddonsCfg.Namespace, Name: fixAddonsCfg.Name}})
Expand Down Expand Up @@ -96,7 +97,7 @@ func TestReconcileAddonsConfiguration_AddAddonsProcess_ErrorIfBrokerExist(t *tes
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, tmpDir, spy.NewLogDummy())
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, tmpDir, spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Namespace: fixAddonsCfg.Namespace, Name: fixAddonsCfg.Name}})
Expand Down Expand Up @@ -135,7 +136,7 @@ func TestReconcileAddonsConfiguration_UpdateAddonsProcess(t *testing.T) {
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, tmpDir, spy.NewLogDummy())
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, tmpDir, spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Namespace: fixAddonsCfg.Namespace, Name: fixAddonsCfg.Name}})
Expand Down Expand Up @@ -166,7 +167,7 @@ func TestReconcileAddonsConfiguration_UpdateAddonsProcess_ConflictingAddons(t *t
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, tmpDir, spy.NewLogDummy())
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, tmpDir, spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Namespace: fixAddonsCfg.Namespace, Name: fixAddonsCfg.Name}})
Expand All @@ -190,7 +191,7 @@ func TestReconcileAddonsConfiguration_DeleteAddonsProcess(t *testing.T) {
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, tmpDir, spy.NewLogDummy())
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, tmpDir, spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Namespace: fixAddonsCfg.Namespace, Name: fixAddonsCfg.Name}})
Expand All @@ -214,7 +215,7 @@ func TestReconcileAddonsConfiguration_DeleteAddonsProcess_ReconcileOtherAddons(t
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, tmpDir, spy.NewLogDummy())
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, tmpDir, spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Namespace: fixAddonsCfg.Namespace, Name: fixAddonsCfg.Name}})
Expand Down Expand Up @@ -242,7 +243,7 @@ func TestReconcileAddonsConfiguration_DeleteAddonsProcess_Error(t *testing.T) {
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, tmpDir, spy.NewLogDummy())
reconciler := NewReconcileAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, tmpDir, spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Namespace: fixAddonsCfg.Namespace, Name: fixAddonsCfg.Name}})
Expand Down Expand Up @@ -416,6 +417,7 @@ type testSuite struct {
brokerFacade *automock.BrokerFacade
docsProvider *automock.DocsProvider
brokerSyncer *automock.BrokerSyncer
templateService *repository.Template
addonStorage storage.Addon
chartStorage storage.Chart
}
Expand All @@ -430,14 +432,16 @@ func getTestSuite(t *testing.T, objects ...runtime.Object) *testSuite {
sFact, err := storage.NewFactory(storage.NewConfigListAllMemory())
require.NoError(t, err)

cli := fake.NewFakeClientWithScheme(sch, objects...)
ts := &testSuite{
t: t,
mgr: getFakeManager(t, fake.NewFakeClientWithScheme(sch, objects...), sch),
mgr: getFakeManager(t, cli, sch),
brokerFacade: &automock.BrokerFacade{},
addonGetterFactory: &automock.AddonGetterFactory{},
addonGetter: &automock.AddonGetter{},
brokerSyncer: &automock.BrokerSyncer{},
docsProvider: &automock.DocsProvider{},
templateService: repository.NewTemplate(cli),

addonStorage: sFact.Addon(),
chartStorage: sFact.Chart(),
Expand Down
36 changes: 36 additions & 0 deletions internal/controller/automock/template_service.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions internal/controller/cluster_addons_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@ type ReconcileClusterAddonsConfiguration struct {
}

// NewReconcileClusterAddonsConfiguration returns a new reconcile.Reconciler
func NewReconcileClusterAddonsConfiguration(mgr manager.Manager, addonGetterFactory addonGetterFactory, chartStorage chartStorage, addonStorage addonStorage, brokerFacade brokerFacade, docsProvider docsProvider, brokerSyncer brokerSyncer, tmpDir string, log logrus.FieldLogger) reconcile.Reconciler {
func NewReconcileClusterAddonsConfiguration(mgr manager.Manager, addonGetterFactory addonGetterFactory, chartStorage chartStorage, addonStorage addonStorage, brokerFacade brokerFacade, docsProvider docsProvider, brokerSyncer brokerSyncer, templateService templateService, tmpDir string, log logrus.FieldLogger) reconcile.Reconciler {
return &ReconcileClusterAddonsConfiguration{
log: log.WithField("controller", "cluster-addons"),
Client: mgr.GetClient(),

common: newControllerCommon(mgr.GetClient(), addonGetterFactory, addonStorage, chartStorage, docsProvider, brokerSyncer, brokerFacade, path.Join(tmpDir, "cluster-addon-loader-dst"), log),
common: newControllerCommon(mgr.GetClient(), addonGetterFactory, addonStorage, chartStorage, docsProvider, brokerSyncer, brokerFacade, templateService, path.Join(tmpDir, "cluster-addon-loader-dst"), log),
}
}

Expand Down
20 changes: 12 additions & 8 deletions internal/controller/cluster_addons_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/kubernetes-incubator/service-catalog/pkg/apis/servicecatalog/v1beta1"
"github.com/kyma-project/helm-broker/internal/controller/automock"
"github.com/kyma-project/helm-broker/internal/controller/repository"
"github.com/kyma-project/helm-broker/internal/storage"
"github.com/kyma-project/helm-broker/pkg/apis"
"github.com/kyma-project/helm-broker/pkg/apis/addons/v1alpha1"
Expand Down Expand Up @@ -50,7 +51,7 @@ func TestReconcileClusterAddonsConfiguration_AddAddonsProcess(t *testing.T) {
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, os.TempDir(), spy.NewLogDummy())
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, os.TempDir(), spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Name: fixAddonsCfg.Name}})
Expand Down Expand Up @@ -86,7 +87,7 @@ func TestReconcileClusterAddonsConfiguration_AddAddonsProcess_Error(t *testing.T
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, os.TempDir(), spy.NewLogDummy())
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, os.TempDir(), spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Name: fixAddonsCfg.Name}})
Expand Down Expand Up @@ -126,7 +127,7 @@ func TestReconcileClusterAddonsConfiguration_UpdateAddonsProcess(t *testing.T) {
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, os.TempDir(), spy.NewLogDummy())
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, os.TempDir(), spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Name: fixAddonsCfg.Name}})
Expand Down Expand Up @@ -160,7 +161,7 @@ func TestReconcileClusterAddonsConfiguration_UpdateAddonsProcess_ConflictingAddo
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, os.TempDir(), spy.NewLogDummy())
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, os.TempDir(), spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Name: fixAddonsCfg.Name}})
Expand All @@ -183,7 +184,7 @@ func TestReconcileClusterAddonsConfiguration_DeleteAddonsProcess(t *testing.T) {
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, os.TempDir(), spy.NewLogDummy())
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, os.TempDir(), spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Name: fixAddonsCfg.Name}})
Expand All @@ -206,7 +207,7 @@ func TestReconcileClusterAddonsConfiguration_DeleteAddonsProcess_ReconcileOtherA
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, os.TempDir(), spy.NewLogDummy())
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, os.TempDir(), spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Name: fixAddonsCfg.Name}})
Expand All @@ -233,7 +234,7 @@ func TestReconcileClusterAddonsConfiguration_DeleteAddonsProcess_Error(t *testin
defer ts.assertExpectations()

// WHEN
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, os.TempDir(), spy.NewLogDummy())
reconciler := NewReconcileClusterAddonsConfiguration(ts.mgr, ts.addonGetterFactory, ts.chartStorage, ts.addonStorage, ts.brokerFacade, ts.docsProvider, ts.brokerSyncer, ts.templateService, os.TempDir(), spy.NewLogDummy())

// THEN
result, err := reconciler.Reconcile(reconcile.Request{NamespacedName: types.NamespacedName{Name: fixAddonsCfg.Name}})
Expand All @@ -255,6 +256,7 @@ type clusterTestSuite struct {
brokerFacade *automock.BrokerFacade
docsProvider *automock.DocsProvider
brokerSyncer *automock.BrokerSyncer
templateService *repository.Template
addonStorage storage.Addon
chartStorage storage.Chart
}
Expand All @@ -269,14 +271,16 @@ func getClusterTestSuite(t *testing.T, objects ...runtime.Object) *clusterTestSu
sFact, err := storage.NewFactory(storage.NewConfigListAllMemory())
require.NoError(t, err)

cli := fake.NewFakeClientWithScheme(sch, objects...)
return &clusterTestSuite{
t: t,
mgr: getFakeManager(t, fake.NewFakeClientWithScheme(sch, objects...), sch),
mgr: getFakeManager(t, cli, sch),
brokerFacade: &automock.BrokerFacade{},
addonGetterFactory: &automock.AddonGetterFactory{},
addonGetter: &automock.AddonGetter{},
brokerSyncer: &automock.BrokerSyncer{},
docsProvider: &automock.DocsProvider{},
templateService: repository.NewTemplate(cli),

addonStorage: sFact.Addon(),
chartStorage: sFact.Chart(),
Expand Down
Loading

0 comments on commit 99e41f3

Please sign in to comment.