summaryrefslogtreecommitdiffstats
path: root/src/k8splugin/plugins/service/plugin.go
diff options
context:
space:
mode:
authorVictor Morales <victor.morales@intel.com>2018-09-18 17:19:00 -0700
committerVictor Morales <victor.morales@intel.com>2018-09-18 17:19:00 -0700
commit05274b1b149139d91445ca10a73defe41f14824a (patch)
tree2ad5e9169a521d29d0c909a271f1ff23b35d2dac /src/k8splugin/plugins/service/plugin.go
parentb368dfe25337494060eb8cd85a5becaf7a465643 (diff)
Add UTs to plugins
Deployment, service and namespace are plugins which offers CRUD operations to manage their resources. They haven't implemented Unit Tests which makes fragile to change/refactor the source code. This change adds their corresponding Unit Tests and defines a standard interface. Change-Id: I1e1eb40f1a18ba33c74069a117462c8df17767ac Signed-off-by: Victor Morales <victor.morales@intel.com> Issue-ID: MULTICLOUD-301
Diffstat (limited to 'src/k8splugin/plugins/service/plugin.go')
-rw-r--r--src/k8splugin/plugins/service/plugin.go83
1 files changed, 35 insertions, 48 deletions
diff --git a/src/k8splugin/plugins/service/plugin.go b/src/k8splugin/plugins/service/plugin.go
index 36ef24f6..61609e98 100644
--- a/src/k8splugin/plugins/service/plugin.go
+++ b/src/k8splugin/plugins/service/plugin.go
@@ -14,9 +14,7 @@ limitations under the License.
package main
import (
- "io/ioutil"
"log"
- "os"
"k8s.io/client-go/kubernetes"
@@ -24,58 +22,44 @@ import (
coreV1 "k8s.io/api/core/v1"
metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/client-go/kubernetes/scheme"
"k8splugin/krd"
)
-// CreateResource object in a specific Kubernetes Deployment
-func CreateResource(kubedata *krd.GenericKubeResourceData, kubeclient *kubernetes.Clientset) (string, error) {
- if kubedata.Namespace == "" {
- kubedata.Namespace = "default"
- }
-
- if _, err := os.Stat(kubedata.YamlFilePath); err != nil {
- return "", pkgerrors.New("File " + kubedata.YamlFilePath + " not found")
- }
-
- log.Println("Reading service YAML")
- rawBytes, err := ioutil.ReadFile(kubedata.YamlFilePath)
- if err != nil {
- return "", pkgerrors.Wrap(err, "Service YAML file read error")
+// Create a service object in a specific Kubernetes cluster
+func Create(data *krd.ResourceData, client kubernetes.Interface) (string, error) {
+ namespace := data.Namespace
+ if namespace == "" {
+ namespace = "default"
}
-
- log.Println("Decoding service YAML")
- decode := scheme.Codecs.UniversalDeserializer().Decode
- obj, _, err := decode(rawBytes, nil, nil)
+ obj, err := krd.DecodeYAML(data.YamlFilePath)
if err != nil {
- return "", pkgerrors.Wrap(err, "Deserialize service error")
+ return "", pkgerrors.Wrap(err, "Decode service object error")
}
- switch o := obj.(type) {
- case *coreV1.Service:
- kubedata.ServiceData = o
- default:
- return "", pkgerrors.New(kubedata.YamlFilePath + " contains another resource different than Service")
+ service, ok := obj.(*coreV1.Service)
+ if !ok {
+ return "", pkgerrors.New("Decoded object contains another resource different than Service")
}
+ service.Namespace = namespace
+ service.Name = data.VnfId + "-" + service.Name
- kubedata.ServiceData.Namespace = kubedata.Namespace
- kubedata.ServiceData.Name = kubedata.InternalVNFID + "-" + kubedata.ServiceData.Name
-
- result, err := kubeclient.CoreV1().Services(kubedata.Namespace).Create(kubedata.ServiceData)
+ result, err := client.CoreV1().Services(namespace).Create(service)
if err != nil {
return "", pkgerrors.Wrap(err, "Create Service error")
}
+
return result.GetObjectMeta().GetName(), nil
}
-// ListResources of existing deployments hosted in a specific Kubernetes Deployment
-func ListResources(limit int64, namespace string, kubeclient *kubernetes.Clientset) (*[]string, error) {
+// List of existing services hosted in a specific Kubernetes cluster
+func List(namespace string, kubeclient kubernetes.Interface) ([]string, error) {
if namespace == "" {
namespace = "default"
}
+
opts := metaV1.ListOptions{
- Limit: limit,
+ Limit: krd.ResourcesListLimit,
}
opts.APIVersion = "apps/v1"
opts.Kind = "Service"
@@ -84,36 +68,39 @@ func ListResources(limit int64, namespace string, kubeclient *kubernetes.Clients
if err != nil {
return nil, pkgerrors.Wrap(err, "Get Service list error")
}
- result := make([]string, 0, limit)
+
+ result := make([]string, 0, krd.ResourcesListLimit)
if list != nil {
- for _, service := range list.Items {
- result = append(result, service.Name)
+ for _, deployment := range list.Items {
+ log.Printf("%v", deployment.Name)
+ result = append(result, deployment.Name)
}
}
- return &result, nil
+
+ return result, nil
}
-// DeleteResource deletes an existing Kubernetes service
-func DeleteResource(name string, namespace string, kubeclient *kubernetes.Clientset) error {
+// Delete an existing service hosted in a specific Kubernetes cluster
+func Delete(name string, namespace string, kubeclient kubernetes.Interface) error {
if namespace == "" {
namespace = "default"
}
- log.Println("Deleting service: " + name)
-
deletePolicy := metaV1.DeletePropagationForeground
- err := kubeclient.CoreV1().Services(namespace).Delete(name, &metaV1.DeleteOptions{
+ opts := &metaV1.DeleteOptions{
PropagationPolicy: &deletePolicy,
- })
- if err != nil {
- return pkgerrors.Wrap(err, "Delete Service error")
+ }
+
+ log.Println("Deleting service: " + name)
+ if err := kubeclient.CoreV1().Services(namespace).Delete(name, opts); err != nil {
+ return pkgerrors.Wrap(err, "Delete service error")
}
return nil
}
-// GetResource existing service hosting in a specific Kubernetes Service
-func GetResource(name string, namespace string, kubeclient *kubernetes.Clientset) (string, error) {
+// Get an existing service hosted in a specific Kubernetes cluster
+func Get(name string, namespace string, kubeclient kubernetes.Interface) (string, error) {
if namespace == "" {
namespace = "default"
}