aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKiran Kamineni <kiran.k.kamineni@intel.com>2019-07-31 11:48:19 -0700
committerKiran Kamineni <kiran.k.kamineni@intel.com>2019-07-31 11:48:23 -0700
commitc9c8b012a027e7ff234ac3440620303374464665 (patch)
treeededa18e2bede9c740bd1982447127a9bde770d6
parent09dffa6d151b046a87edcb91a46449cabc66532c (diff)
Add static compile time check to plugins
Add a static compile time check to plugins to make sure that any interface implementation mismatch is caught at compile time rather than runtime. Issue-ID: MULTICLOUD-666 Change-Id: I7f57774ad9384edb874cf64534f521014aea422f Signed-off-by: Kiran Kamineni <kiran.k.kamineni@intel.com>
-rw-r--r--src/k8splugin/plugins/generic/plugin.go5
-rw-r--r--src/k8splugin/plugins/namespace/plugin.go3
-rw-r--r--src/k8splugin/plugins/network/plugin.go6
-rw-r--r--src/k8splugin/plugins/service/plugin.go3
4 files changed, 15 insertions, 2 deletions
diff --git a/src/k8splugin/plugins/generic/plugin.go b/src/k8splugin/plugins/generic/plugin.go
index b9a96ab5..b20cbe37 100644
--- a/src/k8splugin/plugins/generic/plugin.go
+++ b/src/k8splugin/plugins/generic/plugin.go
@@ -23,10 +23,13 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
utils "github.com/onap/multicloud-k8s/src/k8splugin/internal"
- "github.com/onap/multicloud-k8s/src/k8splugin/internal/plugin"
"github.com/onap/multicloud-k8s/src/k8splugin/internal/helm"
+ "github.com/onap/multicloud-k8s/src/k8splugin/internal/plugin"
)
+// Compile time check to see if genericPlugin implements the correct interface
+var _ plugin.Reference = genericPlugin{}
+
// ExportedVariable is what we will look for when calling the generic plugin
var ExportedVariable genericPlugin
diff --git a/src/k8splugin/plugins/namespace/plugin.go b/src/k8splugin/plugins/namespace/plugin.go
index d30f55b8..feb2aa61 100644
--- a/src/k8splugin/plugins/namespace/plugin.go
+++ b/src/k8splugin/plugins/namespace/plugin.go
@@ -26,6 +26,9 @@ import (
"github.com/onap/multicloud-k8s/src/k8splugin/internal/plugin"
)
+// Compile time check to see if namespacePlugin implements the correct interface
+var _ plugin.Reference = namespacePlugin{}
+
// ExportedVariable is what we will look for when calling the plugin
var ExportedVariable namespacePlugin
diff --git a/src/k8splugin/plugins/network/plugin.go b/src/k8splugin/plugins/network/plugin.go
index ca5aa959..49aedc53 100644
--- a/src/k8splugin/plugins/network/plugin.go
+++ b/src/k8splugin/plugins/network/plugin.go
@@ -14,9 +14,10 @@ limitations under the License.
package main
import (
- v1 "github.com/onap/multicloud-k8s/src/k8splugin/plugins/network/v1"
"regexp"
+ v1 "github.com/onap/multicloud-k8s/src/k8splugin/plugins/network/v1"
+
utils "github.com/onap/multicloud-k8s/src/k8splugin/internal"
"github.com/onap/multicloud-k8s/src/k8splugin/internal/helm"
"github.com/onap/multicloud-k8s/src/k8splugin/internal/plugin"
@@ -25,6 +26,9 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema"
)
+// Compile time check to see if networkPlugin implements the correct interface
+var _ plugin.Reference = networkPlugin{}
+
// ExportedVariable is what we will look for when calling the plugin
var ExportedVariable networkPlugin
diff --git a/src/k8splugin/plugins/service/plugin.go b/src/k8splugin/plugins/service/plugin.go
index 2fceffc0..136a1343 100644
--- a/src/k8splugin/plugins/service/plugin.go
+++ b/src/k8splugin/plugins/service/plugin.go
@@ -26,6 +26,9 @@ import (
"github.com/onap/multicloud-k8s/src/k8splugin/internal/plugin"
)
+// Compile time check to see if servicePlugin implements the correct interface
+var _ plugin.Reference = servicePlugin{}
+
// ExportedVariable is what we will look for when calling the plugin
var ExportedVariable servicePlugin