import (
"bytes"
"context"
+ "io"
+ "k8shelm/internal/lcmservice"
+ "net"
+ "os"
+ "strconv"
+
"github.com/sirupsen/logrus"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/credentials"
_ "google.golang.org/grpc/encoding/gzip"
"google.golang.org/grpc/status"
- "io"
- "k8shelm/internal/lcmservice"
- "net"
- "os"
- "strconv"
)
// GRPC server
// Listen announces on the network address
listener, err = net.Listen("tcp", ":"+strconv.Itoa(s.port))
if err != nil {
- s.logger.Fatalf("failed to listen on port: %s. Err: %s", s.port, err)
- return err
+ s.logger.Fatalf("failed to listen on specified port")
}
- s.logger.Infof("Server started listening on port ", s.port)
+ s.logger.Infof("Server started listening on specified port")
// Secure connection if asked
if s.certificate != "" && s.key != "" {
grpcCreds, err = credentials.NewServerTLSFromFile(
s.certificate, s.key)
if err != nil {
- s.logger.Fatalf("failed to create tls grpc server using cert %s and key: %s. Err: %s", s.certificate, s.key, err)
+ s.logger.Fatalf("failed to create tls grpc server using given cert and key")
}
grpcOpts = append(grpcOpts, grpc.Creds(grpcCreds))
}
// Input validation
if (req.GetHostIp() == "") || (req.GetWorkloadId() == "") {
- return nil, s.logError(status.Errorf(codes.InvalidArgument, "Nil input HostIp: %s or workloadId: %s. " +
- "Err: %s", req.GetHostIp(), req.GetWorkloadId(), err))
+ return nil, s.logError(status.Errorf(codes.InvalidArgument, "HostIP & WorkloadId can't be null", err))
}
// Create HELM Client
hc, err := NewHelmClient(req.GetHostIp(), s.logger)
if os.IsNotExist(err) {
- return nil, s.logError(status.Errorf(codes.InvalidArgument, "Kubeconfig for HostIp can't be found: %s. " +
- "Err: %s", req.GetHostIp(), err))
+ return nil, s.logError(status.Errorf(codes.InvalidArgument, "Kubeconfig corresponding to given Edge can't be found. "+
+ "Err: %s", err))
}
// Query Chart
r, err := hc.queryChart(req.GetWorkloadId())
- if (err != nil) {
+ if err != nil {
return nil, s.logError(status.Errorf(codes.NotFound, "Chart not found for workloadId: %s. Err: %s",
req.GetWorkloadId(), err))
}
func (s *ServerGRPC) Terminate(ctx context.Context, req *lcmservice.TerminateRequest) (resp *lcmservice.TerminateResponse, err error) {
// Input validation
if (req.GetHostIp() == "") || (req.GetWorkloadId() == "") {
- return nil, s.logError(status.Errorf(codes.InvalidArgument, "Nil input HostIp: %s or workloadId: %s. " +
- "Err: %s", req.GetHostIp(), req.GetWorkloadId(), err))
+ return nil, s.logError(status.Errorf(codes.InvalidArgument, "HostIP & WorkloadId can't be null", err))
}
// Create HELM client
hc, err := NewHelmClient(req.GetHostIp(), s.logger)
if os.IsNotExist(err) {
- return nil, s.logError(status.Errorf(codes.InvalidArgument, "Kubeconfig for HostIp can't be found: %s. " +
- "Err: %s", req.GetHostIp(), err))
+ return nil, s.logError(status.Errorf(codes.InvalidArgument, "Kubeconfig corresponding to given Edge can't be found. "+
+ "Err: %s", err))
}
// Uninstall chart
err = hc.uninstallChart(req.GetWorkloadId())
- if (err != nil) {
+ if err != nil {
resp = &lcmservice.TerminateResponse{
Status: "Failure",
}
}
hostIP := req.GetHostIp()
- s.logger.Info("Recieved instantiate request for host ", hostIP)
+ s.logger.Infof("Recieved instantiate request")
// Host validation
- if (hostIP == "") {
- return s.logError(status.Errorf(codes.InvalidArgument, "Nil input for HostIp: %s Err: %s", req.GetHostIp(), err))
+ if hostIP == "" {
+ return s.logError(status.Errorf(codes.InvalidArgument, "HostIP & WorkloadId can't be null", err))
}
// Receive package
return err
}
- s.logger.Info("Waiting to receive more data")
+ s.logger.Debug("Waiting to receive more data")
req, err := stream.Recv()
if err == io.EOF {
- s.logger.Info("No more data")
+ s.logger.Debug("No more data")
break
}
if err != nil {
// Receive chunk and write to helm package
chunk := req.GetPackage()
- s.logger.Info("Recieved chunk")
+ s.logger.Infof("Recieved chunk")
_, err = helmPkg.Write(chunk)
if err != nil {
// Create HELM client
hc, err := NewHelmClient(req.GetHostIp(), s.logger)
if os.IsNotExist(err) {
- return s.logError(status.Errorf(codes.InvalidArgument, "Kubeconfig for HostIp can't be found: %s. " +
- "Err: %s", req.GetHostIp(), err))
+ return s.logError(status.Errorf(codes.InvalidArgument, "Kubeconfig corresponding to edge can't be found. "+
+ "Err: %s", err))
}
relName, err := hc.installChart(helmPkg)
var res lcmservice.InstantiateResponse
res.WorkloadId = relName
- if (err != nil) {
+ if err != nil {
res.Status = "Failure"
+ s.logger.Infof("Instantiation Failed")
} else {
res.Status = "Success"
+ s.logger.Infof("Successful Instantiation")
}
err = stream.SendAndClose(&res)
if err != nil {
return s.logError(status.Errorf(codes.Unknown, "cannot send response: %v", err))
}
- s.logger.Info("Successful Instantiation")
return
}
s.logger.Errorf("Error Information: ", err)
}
return err
-}
\ No newline at end of file
+}