You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2018/12/14 13:26:06 UTC

[camel-k] 02/04: Fix CRD serialization

This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 8e99a72daca4e2b8f64a0bec01a5290689a87d06
Author: nferraro <ni...@gmail.com>
AuthorDate: Thu Nov 15 13:02:22 2018 +0100

    Fix CRD serialization
---
 cmd/camel-k/main.go             |  1 -
 cmd/kamel/main.go               |  1 -
 pkg/install/cluster.go          |  2 +-
 pkg/util/kubernetes/loader.go   | 23 ++++++++++++++++++++---
 pkg/util/kubernetes/register.go | 41 -----------------------------------------
 5 files changed, 21 insertions(+), 47 deletions(-)

diff --git a/cmd/camel-k/main.go b/cmd/camel-k/main.go
index dc30229..e5d71f3 100644
--- a/cmd/camel-k/main.go
+++ b/cmd/camel-k/main.go
@@ -29,7 +29,6 @@ import (
 	sdkVersion "github.com/operator-framework/operator-sdk/version"
 
 	_ "github.com/apache/camel-k/pkg/util/knative"
-	_ "github.com/apache/camel-k/pkg/util/kubernetes"
 	_ "github.com/apache/camel-k/pkg/util/openshift"
 
 	"github.com/sirupsen/logrus"
diff --git a/cmd/kamel/main.go b/cmd/kamel/main.go
index 9ffeec1..e711d0d 100644
--- a/cmd/kamel/main.go
+++ b/cmd/kamel/main.go
@@ -27,7 +27,6 @@ import (
 	"github.com/apache/camel-k/pkg/client/cmd"
 
 	_ "github.com/apache/camel-k/pkg/util/knative"
-	_ "github.com/apache/camel-k/pkg/util/kubernetes"
 	_ "github.com/apache/camel-k/pkg/util/openshift"
 	_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
 )
diff --git a/pkg/install/cluster.go b/pkg/install/cluster.go
index ba9ea50..314de5e 100644
--- a/pkg/install/cluster.go
+++ b/pkg/install/cluster.go
@@ -86,7 +86,7 @@ func IsCRDInstalled(kind string) (bool, error) {
 func installCRD(kind string, resourceName string, collection *kubernetes.Collection) error {
 	crd := []byte(deploy.Resources[resourceName])
 	if collection != nil {
-		unstr, err := kubernetes.LoadResourceFromYaml(string(crd))
+		unstr, err := kubernetes.LoadRawResourceFromYaml(string(crd))
 		if err != nil {
 			return err
 		}
diff --git a/pkg/util/kubernetes/loader.go b/pkg/util/kubernetes/loader.go
index fdc1fb8..cd830da 100644
--- a/pkg/util/kubernetes/loader.go
+++ b/pkg/util/kubernetes/loader.go
@@ -18,6 +18,7 @@ limitations under the License.
 package kubernetes
 
 import (
+	"encoding/json"
 	"github.com/operator-framework/operator-sdk/pkg/util/k8sutil"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
@@ -26,16 +27,32 @@ import (
 
 // LoadResourceFromYaml loads a k8s resource from a yaml definition
 func LoadResourceFromYaml(data string) (runtime.Object, error) {
-	role := []byte(data)
-	roleJSON, err := yaml.ToJSON(role)
+	source := []byte(data)
+	jsonSource, err := yaml.ToJSON(source)
 	if err != nil {
 		return nil, err
 	}
 	u := unstructured.Unstructured{}
-	err = u.UnmarshalJSON(roleJSON)
+	err = u.UnmarshalJSON(jsonSource)
 	if err != nil {
 		return nil, err
 	}
 
 	return k8sutil.RuntimeObjectFromUnstructured(&u)
 }
+
+// LoadRawResourceFromYaml loads a k8s resource from a yaml definition without making assumptions on the underlying type
+func LoadRawResourceFromYaml(data string) (runtime.Object, error) {
+	source := []byte(data)
+	jsonSource, err := yaml.ToJSON(source)
+	if err != nil {
+		return nil, err
+	}
+	var objmap map[string]interface{}
+	if err = json.Unmarshal(jsonSource, &objmap); err != nil {
+		return nil, err
+	}
+	return &unstructured.Unstructured{
+		Object: objmap,
+	}, nil
+}
diff --git a/pkg/util/kubernetes/register.go b/pkg/util/kubernetes/register.go
deleted file mode 100644
index c043a4d..0000000
--- a/pkg/util/kubernetes/register.go
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package kubernetes
-
-import (
-	"github.com/operator-framework/operator-sdk/pkg/util/k8sutil"
-	"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/runtime/schema"
-)
-
-// Register all OpenShift types that we want to manage.
-func init() {
-	k8sutil.AddToSDKScheme(addKnownTypes)
-}
-
-type registerFunction func(*runtime.Scheme) error
-
-func addKnownTypes(scheme *runtime.Scheme) error {
-	gv := schema.GroupVersion{
-		Group:   "apiextensions.k8s.io",
-		Version: "v1beta1",
-	}
-	scheme.AddKnownTypes(gv, &apiextensions.CustomResourceDefinition{}, &apiextensions.CustomResourceDefinitionList{})
-	return nil
-}