diff options
author | 2018-11-10 03:54:15 +0000 | |
---|---|---|
committer | 2018-12-05 16:26:56 -0800 | |
commit | a1abd829315d72adb258da20470eaa2445cf3e32 (patch) | |
tree | a1c2ae3e61490241b0a4c93f49acffd6d319a7a4 /src/k8splugin/plugins/network/v1/types.go | |
parent | daf3a00798ee77e469cd89cb16ade818c50968f9 (diff) |
Add Network and OVN4NFV Plugins
This patch includes support for Network Objects through a new plugin.
It also add the first sub-module plugin for OVN4NFVK8s support.
Change-Id: Ia23c42d50f75a5206e1b6a04052c34e940518428
Signed-off-by: Ritu Sood <ritu.sood@intel.com>
Signed-off-by: Victor Morales <victor.morales@intel.com>
Issue-ID: MULTICLOUD-303
Diffstat (limited to 'src/k8splugin/plugins/network/v1/types.go')
-rw-r--r-- | src/k8splugin/plugins/network/v1/types.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/k8splugin/plugins/network/v1/types.go b/src/k8splugin/plugins/network/v1/types.go new file mode 100644 index 00000000..b4efa39a --- /dev/null +++ b/src/k8splugin/plugins/network/v1/types.go @@ -0,0 +1,67 @@ +/* +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 v1 + +import ( + "encoding/json" + + pkgerrors "github.com/pkg/errors" + metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// OnapNetwork describes an ONAP network resouce +type OnapNetwork struct { + metaV1.TypeMeta `json:",inline"` + metaV1.ObjectMeta `json:"metadata,omitempty"` + Spec OnapNetworkSpec `json:"spec"` +} + +// OnapNetworkSpec is the spec for OnapNetwork resource +type OnapNetworkSpec struct { + Config string `json:"config"` +} + +// DeepCopyObject returns a generically typed copy of an object +func (in OnapNetwork) DeepCopyObject() runtime.Object { + out := OnapNetwork{} + out.TypeMeta = in.TypeMeta + out.ObjectMeta = in.ObjectMeta + out.Spec = in.Spec + + return &out +} + +// GetObjectKind +func (in OnapNetwork) GetObjectKind() schema.ObjectKind { + return &in.TypeMeta +} + +// DecodeConfig content +func (in OnapNetwork) DecodeConfig() (map[string]interface{}, error) { + var raw map[string]interface{} + + if in.Spec.Config == "" { + return nil, pkgerrors.New("Invalid configuration value") + } + + if err := json.Unmarshal([]byte(in.Spec.Config), &raw); err != nil { + return nil, pkgerrors.Wrap(err, "JSON unmarshalling error") + } + + return raw, nil +} |