diff options
author | 2018-08-20 15:50:50 -0700 | |
---|---|---|
committer | 2018-08-24 15:51:16 -0700 | |
commit | a1373742a2c3f980360e4980f3b23b0ff3480ae6 (patch) | |
tree | ce2fb583dea15b8a546d794d21786fdf0f666539 /src/k8splugin/plugins/namespace/plugin.go | |
parent | 6ff216219ccb4567baeb34c9dba73daabb60f629 (diff) |
Seed code for k8s multicloud plugin
This patch provides the initial seed code for the multicloud Kubernetes
plugin and also provides the plugin feature to add new Kubernetes
kinds.
Change-Id: Ie5ee414656665070cde2834c4855ac2ebc179a9a
Issue-ID: MULTICLOUD-301
Signed-off-by: Shashank Kumar Shankar <shashank.kumar.shankar@intel.com>
Signed-off-by: Victor Morales <victor.morales@intel.com>
Diffstat (limited to 'src/k8splugin/plugins/namespace/plugin.go')
-rw-r--r-- | src/k8splugin/plugins/namespace/plugin.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/k8splugin/plugins/namespace/plugin.go b/src/k8splugin/plugins/namespace/plugin.go new file mode 100644 index 00000000..986de863 --- /dev/null +++ b/src/k8splugin/plugins/namespace/plugin.go @@ -0,0 +1,68 @@ +/* +Copyright 2018 Intel Corporation. +Licensed 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 main + +import ( + pkgerrors "github.com/pkg/errors" + + coreV1 "k8s.io/api/core/v1" + metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/kubernetes" +) + +// CreateResource is used to create a new Namespace +func CreateResource(namespace string, client *kubernetes.Clientset) error { + namespaceStruct := &coreV1.Namespace{ + ObjectMeta: metaV1.ObjectMeta{ + Name: namespace, + }, + } + _, err := client.CoreV1().Namespaces().Create(namespaceStruct) + if err != nil { + return pkgerrors.Wrap(err, "Create Namespace error") + } + return nil +} + +// GetResource is used to check if a given namespace actually exists in Kubernetes +func GetResource(namespace string, client *kubernetes.Clientset) (bool, error) { + opts := metaV1.ListOptions{} + + namespaceList, err := client.CoreV1().Namespaces().List(opts) + if err != nil { + return false, pkgerrors.Wrap(err, "Get Namespace list error") + } + + for _, ns := range namespaceList.Items { + if namespace == ns.Name { + return true, nil + } + } + + return false, nil +} + +// DeleteResource is used to delete a namespace +func DeleteResource(namespace string, client *kubernetes.Clientset) error { + deletePolicy := metaV1.DeletePropagationForeground + + err := client.CoreV1().Namespaces().Delete(namespace, &metaV1.DeleteOptions{ + PropagationPolicy: &deletePolicy, + }) + + if err != nil { + return pkgerrors.Wrap(err, "Delete Namespace error") + } + return nil +} |