diff options
author | Ritu Sood <Ritu.Sood@intel.com> | 2020-05-27 17:52:04 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2020-05-27 17:52:04 +0000 |
commit | ef27eb4d63f1cb91de2dbc166f599043aca2609e (patch) | |
tree | e6e597a35c32be664e3209092b7361142ec5c20c /src/rsync/pkg/grpc/register.go | |
parent | 56b6d5b88e4c5c8db7a6fbc8da113a7a205d44ae (diff) | |
parent | 864c44c57473cbb10b55607cdd6e55fac592a43d (diff) |
Merge "InstallApp Grpc proto and server for rsync"
Diffstat (limited to 'src/rsync/pkg/grpc/register.go')
-rw-r--r-- | src/rsync/pkg/grpc/register.go | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/rsync/pkg/grpc/register.go b/src/rsync/pkg/grpc/register.go new file mode 100644 index 00000000..4755256f --- /dev/null +++ b/src/rsync/pkg/grpc/register.go @@ -0,0 +1,97 @@ +/* +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 grpc + +import ( + "os" + "strconv" + "strings" + + log "github.com/onap/multicloud-k8s/src/orchestrator/pkg/infra/logutils" + module "github.com/onap/multicloud-k8s/src/orchestrator/pkg/module" +) + +const default_host = "localhost" +const default_port = 9031 +const default_rsync_name = "rsync" +const ENV_RSYNC_NAME = "RSYNC_NAME" + +func GetServerHostPort() (string, int) { + + // expect name of this rsync program to be in env variable "RSYNC_NAME" - e.g. RSYNC_NAME="rsync" + serviceName := os.Getenv(ENV_RSYNC_NAME) + if serviceName == "" { + serviceName = default_rsync_name + log.Info("Using default name for RSYNC service name", log.Fields{ + "Name": serviceName, + }) + } + + // expect service name to be in env variable - e.g. RSYNC_SERVICE_HOST + host := os.Getenv(strings.ToUpper(serviceName) + "_SERVICE_HOST") + if host == "" { + host = default_host + log.Info("Using default host for rsync gRPC controller", log.Fields{ + "Host": host, + }) + } + + // expect service port to be in env variable - e.g. RSYNC_SERVICE_PORT + port, err := strconv.Atoi(os.Getenv(strings.ToUpper(serviceName) + "_SERVICE_PORT")) + if err != nil || port < 0 { + port = default_port + log.Info("Using default port for rsync gRPC controller", log.Fields{ + "Port": port, + }) + } + return host, port +} + +func RegisterGrpcServer(host string, port int) error { + // expect name of this rsync program to be in env variable "RSYNC_NAME" - e.g. RSYNC_NAME="rsync" + // This will be the name of the controller that is registered in the orchestrator controller API + // This same name will be used as the key name for intents in the deployment intent group + serviceName := os.Getenv(ENV_RSYNC_NAME) + if serviceName == "" { + serviceName = default_rsync_name + log.Info("Using default name for rsync service name", log.Fields{ + "Name": serviceName, + }) + } + + client := module.NewControllerClient() + + // Create or update the controller entry + controller := module.Controller{ + Metadata: module.Metadata{ + Name: serviceName, + }, + Spec: module.ControllerSpec{ + Host: host, + Port: port, + Type: module.CONTROLLER_TYPE_ACTION, + Priority: module.MinControllerPriority, + }, + } + _, err := client.CreateController(controller, true) + if err != nil { + log.Error("Failed to create/update a gRPC controller", log.Fields{ + "Error": err, + "Controller": serviceName, + }) + return err + } + + return nil +} |