Get e2e tests working (#6)
- Cleanup Application scheme registration.
- Fix test sample paths
- Set controller synctime to 2 mins
- Cleanup Scheme registration in controller-reconciler
- Use custom codec that is created from custom scheme (kb v2 uses custom
scheme)
diff --git a/controllers/airflowbase_controller.go b/controllers/airflowbase_controller.go
index bb78421..d451a09 100644
--- a/controllers/airflowbase_controller.go
+++ b/controllers/airflowbase_controller.go
@@ -69,6 +69,7 @@
// SetupWithManager - called by main
func (r *AirflowBaseReconciler) SetupWithManager(mgr ctrl.Manager) error {
+ _ = app.AddToScheme(r.Scheme)
return ctrl.NewControllerManagedBy(mgr).
For(&alpha1.AirflowBase{}).
Complete(abReconciler(mgr))
@@ -86,7 +87,6 @@
WithErrorHandler(abHandleError).
WithValidator(validate).
WithDefaulter(applyDefaults).
- RegisterSchemeBuilder(app.SchemeBuilder).
Build()
}
diff --git a/controllers/airflowcluster_controller.go b/controllers/airflowcluster_controller.go
index aadb4bc..0852937 100644
--- a/controllers/airflowcluster_controller.go
+++ b/controllers/airflowcluster_controller.go
@@ -90,6 +90,7 @@
// SetupWithManager - called by main
func (r *AirflowClusterReconciler) SetupWithManager(mgr ctrl.Manager) error {
+ _ = app.AddToScheme(r.Scheme)
return ctrl.NewControllerManagedBy(mgr).
For(&alpha1.AirflowCluster{}).
Complete(acReconciler(mgr))
@@ -110,7 +111,6 @@
WithErrorHandler(acHandleError).
WithValidator(acValidate).
WithDefaulter(acApplyDefaults).
- RegisterSchemeBuilder(app.SchemeBuilder).
Build()
}
diff --git a/main.go b/main.go
index c083011..d22f412 100644
--- a/main.go
+++ b/main.go
@@ -18,6 +18,7 @@
import (
"flag"
"os"
+ "time"
airflowv1alpha1 "github.com/apache/airflow-on-k8s-operator/api/v1alpha1"
"github.com/apache/airflow-on-k8s-operator/controllers"
@@ -38,6 +39,7 @@
_ = clientgoscheme.AddToScheme(scheme)
_ = airflowv1alpha1.AddToScheme(scheme)
+
// +kubebuilder:scaffold:scheme
}
@@ -53,11 +55,14 @@
o.Development = true
}))
+ syncperiod := time.Minute * 2
+
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
Scheme: scheme,
MetricsBindAddress: metricsAddr,
LeaderElection: enableLeaderElection,
Port: 9443,
+ SyncPeriod: &syncperiod,
})
if err != nil {
setupLog.Error(err, "unable to start manager")
diff --git a/test/e2e/base/base_test.go b/test/e2e/base/base_test.go
index 740389b..1dbfe69 100644
--- a/test/e2e/base/base_test.go
+++ b/test/e2e/base/base_test.go
@@ -27,7 +27,7 @@
const (
CRName = "AirflowBase"
- SampleDir = "../../hack/sample/"
+ SampleDir = "../../../hack/sample/"
)
var f *test.Framework
diff --git a/test/e2e/cluster/cluster_test.go b/test/e2e/cluster/cluster_test.go
index 2d56a68..48eac95 100644
--- a/test/e2e/cluster/cluster_test.go
+++ b/test/e2e/cluster/cluster_test.go
@@ -27,7 +27,7 @@
const (
CRName = "AirflowCluster"
- SampleDir = "../../hack/sample/"
+ SampleDir = "../../../hack/sample/"
)
var f *test.Framework
diff --git a/test/e2e/gcp/gcp_test.go b/test/e2e/gcp/gcp_test.go
index c369909..41c80e0 100644
--- a/test/e2e/gcp/gcp_test.go
+++ b/test/e2e/gcp/gcp_test.go
@@ -27,7 +27,7 @@
const (
CRName = "AirflowCluster"
- SampleDir = "../../hack/sample/"
+ SampleDir = "../../../hack/sample/"
)
var f *test.Framework
diff --git a/vendor/sigs.k8s.io/controller-reconciler/pkg/genericreconciler/genericreconciler.go b/vendor/sigs.k8s.io/controller-reconciler/pkg/genericreconciler/genericreconciler.go
index bb76f08..ad9520f 100644
--- a/vendor/sigs.k8s.io/controller-reconciler/pkg/genericreconciler/genericreconciler.go
+++ b/vendor/sigs.k8s.io/controller-reconciler/pkg/genericreconciler/genericreconciler.go
@@ -33,7 +33,6 @@
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
- "sigs.k8s.io/controller-runtime/pkg/runtime/scheme"
"time"
)
@@ -396,20 +395,10 @@
return gr
}
-// AddToSchemes for adding Application to scheme
-var AddToSchemes runtime.SchemeBuilder
-
-// RegisterSchemeBuilder - create controller
-func (gr *Reconciler) RegisterSchemeBuilder(builder *scheme.Builder) *Reconciler {
- AddToSchemes = append(AddToSchemes, builder.AddToScheme)
- return gr
-}
-
// Build - create controller
func (gr *Reconciler) Build() *Reconciler {
km := k8s.NewRsrcManager(context.TODO(), gr.manager.GetClient(), gr.manager.GetScheme())
gr.rsrcMgr.Add(k8s.Type, km)
- AddToSchemes.AddToScheme(gr.manager.GetScheme())
return gr
}
diff --git a/vendor/sigs.k8s.io/controller-reconciler/pkg/reconciler/manager/k8s/manager.go b/vendor/sigs.k8s.io/controller-reconciler/pkg/reconciler/manager/k8s/manager.go
index f7f56f2..173a088 100644
--- a/vendor/sigs.k8s.io/controller-reconciler/pkg/reconciler/manager/k8s/manager.go
+++ b/vendor/sigs.k8s.io/controller-reconciler/pkg/reconciler/manager/k8s/manager.go
@@ -27,10 +27,10 @@
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
+ serializer "k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/apimachinery/pkg/util/yaml"
- "k8s.io/client-go/kubernetes/scheme"
"log"
"os"
"reflect"
@@ -46,11 +46,16 @@
Type = "k8s"
)
+// Codecs - Default Codec that is initlizated when manager is created
+// TODO - this becomes global. try make it part of manager context ?
+var Codecs serializer.CodecFactory
+
// RsrcManager - complies with resource manager interface
type RsrcManager struct {
name string
client client.Client
scheme *runtime.Scheme
+ codecs serializer.CodecFactory
}
// FileResource - file, resource
@@ -71,7 +76,19 @@
// NewRsrcManager returns nil manager
func NewRsrcManager(ctx context.Context, c client.Client, v *runtime.Scheme) *RsrcManager {
rm := &RsrcManager{}
- rm.WithClient(c).WithName(Type + "Mgr").WithScheme(v)
+ rm.WithClient(c).WithName(Type + "Mgr").WithScheme(v).WithCodec(nil)
+ return rm
+}
+
+// WithCodec - inject or create codec
+func (rm *RsrcManager) WithCodec(codec *serializer.CodecFactory) *RsrcManager {
+ if codec != nil {
+ rm.codecs = *codec
+ Codecs = *codec
+ } else {
+ rm.codecs = serializer.NewCodecFactory(rm.scheme)
+ Codecs = rm.codecs
+ }
return rm
}
@@ -199,7 +216,7 @@
if err == nil {
err = tmpl.Execute(&exdoc, data)
if err == nil {
- d := scheme.Codecs.UniversalDeserializer()
+ d := Codecs.UniversalDeserializer()
obj, _, e := d.Decode(exdoc.Bytes(), nil, nil)
err = e
if err == nil {
diff --git a/vendor/sigs.k8s.io/controller-reconciler/pkg/test/framework.go b/vendor/sigs.k8s.io/controller-reconciler/pkg/test/framework.go
index a534eaf..dac3a9f 100644
--- a/vendor/sigs.k8s.io/controller-reconciler/pkg/test/framework.go
+++ b/vendor/sigs.k8s.io/controller-reconciler/pkg/test/framework.go
@@ -66,10 +66,10 @@
flag.Parse()
cfg, err := config.GetConfig()
- g.Expect(err).NotTo(g.HaveOccurred(), "failed to initialize the Framework: %v", err)
+ g.Expect(err).NotTo(g.HaveOccurred(), "failed to get config: %v", err)
- mgr, err := manager.New(cfg, manager.Options{})
- g.Expect(err).NotTo(g.HaveOccurred(), "failed to initialize the Framework: %v", err)
+ mgr, err := manager.New(cfg, manager.Options{MetricsBindAddress: "0"})
+ g.Expect(err).NotTo(g.HaveOccurred(), "failed to create manager: %v", err)
err = apiextensionsv1beta1.AddToScheme(mgr.GetScheme())
g.Expect(err).NotTo(g.HaveOccurred(), "failed to initialize the Framework: %v", err)