diff options
author | Eric Multanen <eric.w.multanen@intel.com> | 2020-05-28 17:07:20 -0700 |
---|---|---|
committer | Eric Multanen <eric.w.multanen@intel.com> | 2020-06-02 14:00:07 -0700 |
commit | ad7782cbf83c11f152a6457f3808a4da99a1ae56 (patch) | |
tree | e88276d8f0d55bd58a903d1c31ab4e43e4011193 /src/ncm/pkg/module/workloadifintent.go | |
parent | c257a136355a794f5bf778f670c041e8958c3608 (diff) |
Create OVN network action controller from ncm
Split out part of ncm microservice to act as the
Onv4k8s network action controller for the orchestrator.
No code changes really - just moving around to fit the
architectural plan.
Issue-ID: MULTICLOUD-1029
Signed-off-by: Eric Multanen <eric.w.multanen@intel.com>
Change-Id: I17292ac72d041050269f05fc4a0c2a6ca741aeb5
Diffstat (limited to 'src/ncm/pkg/module/workloadifintent.go')
-rw-r--r-- | src/ncm/pkg/module/workloadifintent.go | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/src/ncm/pkg/module/workloadifintent.go b/src/ncm/pkg/module/workloadifintent.go deleted file mode 100644 index 55062564..00000000 --- a/src/ncm/pkg/module/workloadifintent.go +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright 2020 Intel Corporation, Inc - * - * 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 module - -import ( - "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/db" - - pkgerrors "github.com/pkg/errors" -) - -// WorkloadIfIntent contains the parameters needed for dynamic networks -type WorkloadIfIntent struct { - Metadata Metadata `json:"metadata"` - Spec WorkloadIfIntentSpec `json:"spec"` -} - -type WorkloadIfIntentSpec struct { - IfName string `json:"interface"` - NetworkName string `json:"name"` - DefaultGateway string `json:"defaultGateway"` // optional, default value is "false" - IpAddr string `json:"ipAddress,omitempty"` // optional, if not provided then will be dynamically allocated - MacAddr string `json:"macAddress,omitempty"` // optional, if not provided then will be dynamically allocated -} - -// WorkloadIfIntentKey is the key structure that is used in the database -type WorkloadIfIntentKey struct { - Project string `json:"provider"` - CompositeApp string `json:"compositeapp"` - CompositeAppVersion string `json:"compositeappversion"` - NetControlIntent string `json:"netcontrolintent"` - WorkloadIntent string `json:"workloadintent"` - WorkloadIfIntent string `json:"workloadifintent"` -} - -// Manager is an interface exposing the WorkloadIfIntent functionality -type WorkloadIfIntentManager interface { - CreateWorkloadIfIntent(wi WorkloadIfIntent, project, compositeapp, compositeappversion, netcontrolintent, workloadintent string, exists bool) (WorkloadIfIntent, error) - GetWorkloadIfIntent(name, project, compositeapp, compositeappversion, netcontrolintent, workloadintent string) (WorkloadIfIntent, error) - GetWorkloadIfIntents(project, compositeapp, compositeappversion, netcontrolintent, workloadintent string) ([]WorkloadIfIntent, error) - DeleteWorkloadIfIntent(name, project, compositeapp, compositeappversion, netcontrolintent, workloadintent string) error -} - -// WorkloadIfIntentClient implements the Manager -// It will also be used to maintain some localized state -type WorkloadIfIntentClient struct { - db ClientDbInfo -} - -// NewWorkloadIfIntentClient returns an instance of the WorkloadIfIntentClient -// which implements the Manager -func NewWorkloadIfIntentClient() *WorkloadIfIntentClient { - return &WorkloadIfIntentClient{ - db: ClientDbInfo{ - storeName: "orchestrator", - tagMeta: "workloadifintentmetadata", - }, - } -} - -// CreateWorkloadIfIntent - create a new WorkloadIfIntent -func (v *WorkloadIfIntentClient) CreateWorkloadIfIntent(wif WorkloadIfIntent, project, compositeapp, compositeappversion, netcontrolintent, workloadintent string, exists bool) (WorkloadIfIntent, error) { - - //Construct key and tag to select the entry - key := WorkloadIfIntentKey{ - Project: project, - CompositeApp: compositeapp, - CompositeAppVersion: compositeappversion, - NetControlIntent: netcontrolintent, - WorkloadIntent: workloadintent, - WorkloadIfIntent: wif.Metadata.Name, - } - - //Check if the Workload Intent exists - _, err := NewWorkloadIntentClient().GetWorkloadIntent(workloadintent, project, compositeapp, compositeappversion, netcontrolintent) - if err != nil { - return WorkloadIfIntent{}, pkgerrors.Errorf("Workload Intent %v does not exist", workloadintent) - } - - //Check if this WorkloadIfIntent already exists - _, err = v.GetWorkloadIfIntent(wif.Metadata.Name, project, compositeapp, compositeappversion, netcontrolintent, workloadintent) - if err == nil && !exists { - return WorkloadIfIntent{}, pkgerrors.New("WorkloadIfIntent already exists") - } - - err = db.DBconn.Insert(v.db.storeName, key, nil, v.db.tagMeta, wif) - if err != nil { - return WorkloadIfIntent{}, pkgerrors.Wrap(err, "Creating DB Entry") - } - - return wif, nil -} - -// GetWorkloadIfIntent returns the WorkloadIfIntent for corresponding name -func (v *WorkloadIfIntentClient) GetWorkloadIfIntent(name, project, compositeapp, compositeappversion, netcontrolintent, workloadintent string) (WorkloadIfIntent, error) { - - //Construct key and tag to select the entry - key := WorkloadIfIntentKey{ - Project: project, - CompositeApp: compositeapp, - CompositeAppVersion: compositeappversion, - NetControlIntent: netcontrolintent, - WorkloadIntent: workloadintent, - WorkloadIfIntent: name, - } - - value, err := db.DBconn.Find(v.db.storeName, key, v.db.tagMeta) - if err != nil { - return WorkloadIfIntent{}, pkgerrors.Wrap(err, "Get WorkloadIfIntent") - } - - //value is a byte array - if value != nil { - wif := WorkloadIfIntent{} - err = db.DBconn.Unmarshal(value[0], &wif) - if err != nil { - return WorkloadIfIntent{}, pkgerrors.Wrap(err, "Unmarshalling Value") - } - return wif, nil - } - - return WorkloadIfIntent{}, pkgerrors.New("Error getting WorkloadIfIntent") -} - -// GetWorkloadIfIntentList returns all of the WorkloadIfIntent for corresponding name -func (v *WorkloadIfIntentClient) GetWorkloadIfIntents(project, compositeapp, compositeappversion, netcontrolintent, workloadintent string) ([]WorkloadIfIntent, error) { - - //Construct key and tag to select the entry - key := WorkloadIfIntentKey{ - Project: project, - CompositeApp: compositeapp, - CompositeAppVersion: compositeappversion, - NetControlIntent: netcontrolintent, - WorkloadIntent: workloadintent, - WorkloadIfIntent: "", - } - - var resp []WorkloadIfIntent - values, err := db.DBconn.Find(v.db.storeName, key, v.db.tagMeta) - if err != nil { - return []WorkloadIfIntent{}, pkgerrors.Wrap(err, "Get WorkloadIfIntents") - } - - for _, value := range values { - wif := WorkloadIfIntent{} - err = db.DBconn.Unmarshal(value, &wif) - if err != nil { - return []WorkloadIfIntent{}, pkgerrors.Wrap(err, "Unmarshalling Value") - } - resp = append(resp, wif) - } - - return resp, nil -} - -// Delete the WorkloadIfIntent from database -func (v *WorkloadIfIntentClient) DeleteWorkloadIfIntent(name, project, compositeapp, compositeappversion, netcontrolintent, workloadintent string) error { - - //Construct key and tag to select the entry - key := WorkloadIfIntentKey{ - Project: project, - CompositeApp: compositeapp, - CompositeAppVersion: compositeappversion, - NetControlIntent: netcontrolintent, - WorkloadIntent: workloadintent, - WorkloadIfIntent: name, - } - - err := db.DBconn.Remove(v.db.storeName, key) - if err != nil { - return pkgerrors.Wrap(err, "Delete WorkloadIfIntent Entry;") - } - - return nil -} |