Skip to content

Commit 064fbca

Browse files
committed
sync latest protocol and add file mountable agent secret
1 parent ee49204 commit 064fbca

File tree

3 files changed

+45
-13
lines changed

3 files changed

+45
-13
lines changed

cmd/lk/agent.go

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939

4040
const (
4141
cloudAgentsBetaSignupURL = "https://forms.gle/GkGNNTiMt2qyfnu78"
42+
maxSecretFileSize = 1024 * 1024 // 1MB
4243
)
4344

4445
var (
@@ -69,6 +70,12 @@ var (
6970
Required: false,
7071
}
7172

73+
secretsMountFlag = &cli.StringSliceFlag{
74+
Name: "secret-mount",
75+
Usage: "Local path to a secret file to be mounted on agent environment",
76+
Required: false,
77+
}
78+
7279
logTypeFlag = &cli.StringFlag{
7380
Name: "log-type",
7481
Usage: "Type of logs to retrieve. Valid values are 'deploy' and 'build'",
@@ -103,6 +110,7 @@ var (
103110
Flags: []cli.Flag{
104111
secretsFlag,
105112
secretsFileFlag,
113+
secretsMountFlag,
106114
silentFlag,
107115
regionFlag,
108116
skipSDKCheckFlag,
@@ -146,6 +154,7 @@ var (
146154
Flags: []cli.Flag{
147155
secretsFlag,
148156
secretsFileFlag,
157+
secretsMountFlag,
149158
skipSDKCheckFlag,
150159
},
151160
// NOTE: since secrets may contain commas, or indeed any special character we might want to treat as a flag separator,
@@ -171,6 +180,7 @@ var (
171180
Flags: []cli.Flag{
172181
secretsFlag,
173182
secretsFileFlag,
183+
secretsMountFlag,
174184
},
175185
// NOTE: since secrets may contain commas, or indeed any special character we might want to treat as a flag separator,
176186
// we disable it entirely here and require multiple --secrets flags to be used.
@@ -263,6 +273,7 @@ var (
263273
Flags: []cli.Flag{
264274
secretsFlag,
265275
secretsFileFlag,
276+
secretsMountFlag,
266277
idFlag(false),
267278
&cli.BoolFlag{
268279
Name: "overwrite",
@@ -1112,17 +1123,39 @@ func requireSecrets(_ context.Context, cmd *cli.Command, required, lazy bool) ([
11121123
silent := cmd.Bool("silent")
11131124
secrets := make(map[string]*lkproto.AgentSecret)
11141125

1126+
mountableSecretFiles := cmd.StringSlice("secret-mount")
1127+
for _, filePath := range mountableSecretFiles {
1128+
fileInfo, err := os.Stat(filePath)
1129+
if err != nil {
1130+
return nil, fmt.Errorf("failed to get secret file: %w", err)
1131+
}
1132+
if fileInfo.Size() > maxSecretFileSize {
1133+
return nil, fmt.Errorf("secret file size is too large (must be under %d MB): %s", maxSecretFileSize/(1024*1024), filePath)
1134+
}
1135+
fileContent, err := os.ReadFile(filePath)
1136+
if err != nil {
1137+
return nil, fmt.Errorf("failed to read secret file: %w", err)
1138+
}
1139+
name := fileInfo.Name()
1140+
agentSecret := &lkproto.AgentSecret{
1141+
Name: name,
1142+
Value: []byte(fileContent),
1143+
Kind: lkproto.AgentSecretKind_AGENT_SECRET_KIND_FILE,
1144+
}
1145+
secrets[name] = agentSecret
1146+
}
1147+
11151148
if values, err := parseKeyValuePairs(cmd, "secrets"); err != nil {
11161149
return nil, fmt.Errorf("failed to parse secrets: %w", err)
11171150
} else {
11181151
for key, val := range values {
11191152
agentSecret := &lkproto.AgentSecret{
11201153
Name: key,
11211154
Value: []byte(val),
1155+
Kind: lkproto.AgentSecretKind_AGENT_SECRET_KIND_ENVIRONMENT,
11221156
}
11231157
secrets[key] = agentSecret
11241158
}
1125-
11261159
}
11271160

11281161
shouldReadFromDisk := cmd.IsSet("secrets-file") || !lazy || (required && len(secrets) == 0)
@@ -1143,6 +1176,7 @@ func requireSecrets(_ context.Context, cmd *cli.Command, required, lazy bool) ([
11431176
secret := &lkproto.AgentSecret{
11441177
Name: k,
11451178
Value: []byte(v),
1179+
Kind: lkproto.AgentSecretKind_AGENT_SECRET_KIND_ENVIRONMENT,
11461180
}
11471181
secrets[k] = secret
11481182
}

cmd/lk/replay.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,12 @@ func loadReplay(ctx context.Context, cmd *cli.Command) error {
160160
return err
161161
}
162162

163-
req := &replay.LoadReplayRequest{
164-
ReplayId: cmd.String("id"),
165-
RoomName: cmd.String("room"),
166-
StartingPts: int64(cmd.Int("pts")),
163+
req := &replay.PlaybackRequest{
164+
ReplayId: cmd.String("id"),
165+
RoomName: cmd.String("room"),
166+
StartTime: int64(cmd.Int("pts")),
167167
}
168-
res, err := replayClient.LoadReplay(ctx, req)
168+
res, err := replayClient.Playback(ctx, req)
169169
if err != nil {
170170
return err
171171
}
@@ -180,11 +180,11 @@ func seek(ctx context.Context, cmd *cli.Command) error {
180180
return err
181181
}
182182

183-
req := &replay.RoomSeekRequest{
183+
req := &replay.SeekRequest{
184184
PlaybackId: cmd.String("id"),
185-
Pts: int64(cmd.Int("pts")),
185+
StartTime: int64(cmd.Int("pts")),
186186
}
187-
_, err = replayClient.SeekForRoom(ctx, req)
187+
_, err = replayClient.Seek(ctx, req)
188188
return err
189189
}
190190

@@ -194,10 +194,10 @@ func closeReplay(ctx context.Context, cmd *cli.Command) error {
194194
return err
195195
}
196196

197-
req := &replay.CloseReplayRequest{
197+
req := &replay.ClosePlaybackRequest{
198198
PlaybackId: cmd.String("id"),
199199
}
200-
_, err = replayClient.CloseReplay(ctx, req)
200+
_, err = replayClient.Close(ctx, req)
201201
return err
202202
}
203203

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,6 @@ github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731 h1:9x+U2HGLrSw5AT
274274
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
275275
github.com/livekit/mediatransportutil v0.0.0-20250825135402-7bc31f107ade h1:lpxPcglwzUWNB4J0S2qZuyMehzmR7vW9whzSwV4IGoI=
276276
github.com/livekit/mediatransportutil v0.0.0-20250825135402-7bc31f107ade/go.mod h1:mSNtYzSf6iY9xM3UX42VEI+STHvMgHmrYzEHPcdhB8A=
277-
github.com/livekit/protocol v1.41.0 h1:aCMkM/MEmiZt7LRoZAfo1muZYjlioaw+NbVnkUDpgn8=
278-
github.com/livekit/protocol v1.41.0/go.mod h1:Scx8arfj5y65w6EYA3ZIKJafoN2xBuV8pauvyrvI4eg=
279277
github.com/livekit/protocol v1.41.1-0.20250909050443-48ed04737846 h1:J/Ry54lAQShsUZQ74DLxuvVyPl92TCaYi/47eLLKem0=
280278
github.com/livekit/protocol v1.41.1-0.20250909050443-48ed04737846/go.mod h1:Scx8arfj5y65w6EYA3ZIKJafoN2xBuV8pauvyrvI4eg=
281279
github.com/livekit/psrpc v0.6.1-0.20250726180611-3915e005e741 h1:KKL1u94l6dF9u4cBwnnfozk27GH1txWy2SlvkfgmzoY=

0 commit comments

Comments
 (0)