Skip to content

Commit 2b9f265

Browse files
authored
fix(component): fix missing propagation of original request header instill-artifact component (#1056)
Because - We need to propagate headers with the `instill-` prefix to the instill-artifact component. This commit - Fixes missing propagation of original request header instill-artifact component
1 parent 5a0c3d9 commit 2b9f265

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed

pkg/component/data/instillartifact/v0/client.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ func getRequestMetadata(vars map[string]any) metadata.MD {
4949
"Instill-Auth-Type", "user",
5050
)
5151

52+
originalHeader := util.GetOriginalHeader(vars)
53+
for k, v := range originalHeader {
54+
md.Set(k, v.(string))
55+
}
56+
5257
if requester := util.GetInstillRequesterUID(vars); requester != "" {
5358
md.Set("Instill-Requester-Uid", requester)
5459
}

pkg/component/internal/util/helper.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,13 @@ func GetInstillRequesterUID(vars map[string]any) string {
215215
return vars["__PIPELINE_REQUESTER_UID"].(string)
216216
}
217217

218+
func GetOriginalHeader(vars map[string]any) map[string]any {
219+
if v, ok := vars["__ORIGINAL_HEADER"]; ok {
220+
return v.(map[string]any)
221+
}
222+
return nil
223+
}
224+
218225
func ConvertDataFrameToMarkdownTable(rows [][]string) string {
219226
var sb strings.Builder
220227

pkg/recipe/variable.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ type SystemVariables struct {
5050
MgmtBackend string `json:"__MGMT_BACKEND"`
5151
ArtifactBackend string `json:"__ARTIFACT_BACKEND"`
5252
AgentBackend string `json:"__AGENT_BACKEND"`
53+
54+
// OriginalHeader contains the original context header from the request.
55+
OriginalHeader map[string]string `json:"__ORIGINAL_HEADER"`
5356
}
5457

5558
// TODO: GenerateSystemVariables will be refactored for better code structure.

pkg/service/pipeline.go

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"go.temporal.io/sdk/client"
2020
"go.temporal.io/sdk/temporal"
2121
"go.uber.org/zap"
22+
"google.golang.org/grpc/metadata"
2223
"google.golang.org/protobuf/types/known/anypb"
2324
"google.golang.org/protobuf/types/known/structpb"
2425

@@ -1709,7 +1710,18 @@ func (s *service) triggerPipeline(
17091710
PipelineRequesterUID: requester.NsUID,
17101711
PipelineRequesterID: requester.NsID,
17111712
HeaderAuthorization: resourcex.GetRequestSingleHeader(ctx, "authorization"),
1712-
ExpiryRule: triggerParams.expiryRule,
1713+
OriginalHeader: func() map[string]string {
1714+
md, ok := metadata.FromIncomingContext(ctx)
1715+
if !ok {
1716+
return nil
1717+
}
1718+
header := make(map[string]string)
1719+
for k, v := range md {
1720+
header[k] = v[0]
1721+
}
1722+
return header
1723+
}(),
1724+
ExpiryRule: triggerParams.expiryRule,
17131725
},
17141726
Streaming: isStreaming,
17151727
Mode: mgmtpb.Mode_MODE_SYNC,
@@ -1805,7 +1817,18 @@ func (s *service) triggerAsyncPipeline(ctx context.Context, params triggerParams
18051817
PipelineRequesterUID: requester.NsUID,
18061818
PipelineRequesterID: requester.NsID,
18071819
HeaderAuthorization: resourcex.GetRequestSingleHeader(ctx, "authorization"),
1808-
ExpiryRule: params.expiryRule,
1820+
OriginalHeader: func() map[string]string {
1821+
md, ok := metadata.FromIncomingContext(ctx)
1822+
if !ok {
1823+
return nil
1824+
}
1825+
header := make(map[string]string)
1826+
for k, v := range md {
1827+
header[k] = v[0]
1828+
}
1829+
return header
1830+
}(),
1831+
ExpiryRule: params.expiryRule,
18091832
},
18101833
Streaming: isStreaming,
18111834
Mode: mgmtpb.Mode_MODE_ASYNC,

0 commit comments

Comments
 (0)