[VOL-5571]:passing ctx deadline for onu-upgrade

Change-Id: Iddc549c613e20477095ee873f3a908876cbaa9c7
Signed-off-by: balaji.nagarajan <balaji.nagarajan@radisys.com>
diff --git a/VERSION b/VERSION
index 03d7b8f..36f601f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.7.15
+3.7.16
diff --git a/rw_core/core/device/agent_image.go b/rw_core/core/device/agent_image.go
index 7ba24d4..0c14b82 100644
--- a/rw_core/core/device/agent_image.go
+++ b/rw_core/core/device/agent_image.go
@@ -29,6 +29,7 @@
 	"github.com/opencord/voltha-lib-go/v7/pkg/log"
 	"github.com/opencord/voltha-protos/v5/go/voltha"
 	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/metadata"
 	"google.golang.org/grpc/status"
 	"google.golang.org/protobuf/proto"
 )
@@ -612,6 +613,7 @@
 	subCtx, cancel := context.WithTimeout(log.WithSpanFromContext(context.Background(), ctx), agent.rpcTimeout)
 	defer cancel()
 	subCtx = coreutils.WithRPCMetadataFromContext(subCtx, ctx)
+	subCtx = cloneMetadata(ctx, subCtx)
 
 	agent.requestQueue.RequestComplete()
 	return client.DownloadOnuImage(subCtx, request)
@@ -789,3 +791,13 @@
 	agent.requestQueue.RequestComplete()
 	return client.GetOnuImages(ctx, id)
 }
+
+func cloneMetadata(ctx context.Context, subCtx context.Context) context.Context {
+	if md, ok := metadata.FromIncomingContext(ctx); ok && len(md) > 0 {
+		logger.Debug(subCtx, "cloning-incoming-metadata", log.Fields{"metadata": md})
+		return metadata.NewOutgoingContext(subCtx, md)
+	}
+
+	logger.Debug(subCtx, "no metadata found to clone")
+	return subCtx
+}