diff options
author | Eric Multanen <eric.w.multanen@intel.com> | 2020-04-23 12:55:38 -0700 |
---|---|---|
committer | Eric Multanen <eric.w.multanen@intel.com> | 2020-06-03 17:17:21 -0700 |
commit | e80f462ab1621090dd9cf7a2c648eb168aaafa5e (patch) | |
tree | a94b336dcb30929756077e80dd8ed581b1455088 /src/orchestrator/pkg/grpc/contextupdateclient/client.go | |
parent | 8e7a20777f2100324526a34b4b6c943b512df0fb (diff) |
Add grpc contextupdate client call to orchestrator
Adds a contextupdate client function that can
be invoked for any action or placement controller
to process intents for that controller.
Adds the corresponding server side handling for
the ovnaction controller.
Issue-ID: MULTICLOUD-1019
Signed-off-by: Eric Multanen <eric.w.multanen@intel.com>
Change-Id: Ifdfc99e522288a530735bc4c1402d45449f6d057
Diffstat (limited to 'src/orchestrator/pkg/grpc/contextupdateclient/client.go')
-rw-r--r-- | src/orchestrator/pkg/grpc/contextupdateclient/client.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/orchestrator/pkg/grpc/contextupdateclient/client.go b/src/orchestrator/pkg/grpc/contextupdateclient/client.go new file mode 100644 index 00000000..d89a1bca --- /dev/null +++ b/src/orchestrator/pkg/grpc/contextupdateclient/client.go @@ -0,0 +1,62 @@ +/* +Copyright 2020 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 contextupdateclient + +import ( + "context" + "time" + + contextpb "github.com/onap/multicloud-k8s/src/orchestrator/pkg/grpc/contextupdate" + log "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils" + "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/rpc" + pkgerrors "github.com/pkg/errors" +) + +// InvokeContextUpdate will make the grpc call to the specified controller +// The controller will take the specified intentName and update the AppContext +// appropriatly based on its operation as a placement or action controller. +func InvokeContextUpdate(controllerName, intentName, appContextId string) error { + var err error + var rpcClient contextpb.ContextupdateClient + var updateRes *contextpb.ContextUpdateResponse + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + conn := rpc.GetRpcConn(controllerName) + + if conn != nil { + rpcClient = contextpb.NewContextupdateClient(conn) + updateReq := new(contextpb.ContextUpdateRequest) + updateReq.AppContext = appContextId + updateReq.IntentName = intentName + updateRes, err = rpcClient.UpdateAppContext(ctx, updateReq) + } else { + return pkgerrors.Errorf("ContextUpdate Failed - Could not get ContextupdateClient: %v", controllerName) + } + + if err == nil { + if updateRes.AppContextUpdated { + log.Info("ContextUpdate Passed", log.Fields{ + "Controller": controllerName, + "Intent": intentName, + "AppContext": appContextId, + "Message": updateRes.AppContextUpdateMessage, + }) + return nil + } else { + return pkgerrors.Errorf("ContextUpdate Failed: %v", updateRes.AppContextUpdateMessage) + } + } + return err +} |