Skip to content

Commit 3609b4c

Browse files
authored
Support cloud-agent restart API (#616)
* support agent restart * update dependency * fix version extract * use jq for install script
1 parent 1d333fa commit 3609b4c

File tree

4 files changed

+55
-28
lines changed

4 files changed

+55
-28
lines changed

cmd/lk/agent.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,16 @@ var (
143143
},
144144
ArgsUsage: "[working-dir]",
145145
},
146+
{
147+
Name: "restart",
148+
Usage: "Restart an agent",
149+
Before: createAgentClient,
150+
Action: restartAgent,
151+
Flags: []cli.Flag{
152+
idFlag(false),
153+
},
154+
ArgsUsage: "[working-dir]",
155+
},
146156
{
147157
Name: "rollback",
148158
Usage: "Rollback an agent to a previous version",
@@ -585,6 +595,26 @@ func getAgentStatus(ctx context.Context, cmd *cli.Command) error {
585595
return nil
586596
}
587597

598+
func restartAgent(ctx context.Context, cmd *cli.Command) error {
599+
agentID, err := getAgentID(cmd, workingDir, tomlFilename)
600+
if err != nil {
601+
return err
602+
}
603+
604+
resp, err := agentsClient.RestartAgent(ctx, &lkproto.RestartAgentRequest{
605+
AgentId: agentID,
606+
})
607+
if err != nil {
608+
return err
609+
}
610+
if !resp.Success {
611+
return fmt.Errorf("failed to restart agent: %s", resp.Message)
612+
}
613+
614+
fmt.Printf("Restarted agent [%s]\n", util.Accented(agentID))
615+
return nil
616+
}
617+
588618
func updateAgent(ctx context.Context, cmd *cli.Command) error {
589619
configExists, err := requireConfig(workingDir, tomlFilename)
590620
if err != nil && configExists {

go.mod

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ require (
1313
github.com/go-logr/logr v1.4.3
1414
github.com/go-task/task/v3 v3.43.3
1515
github.com/joho/godotenv v1.5.1
16-
github.com/livekit/protocol v1.39.3-0.20250620210232-022f52ebc520
17-
github.com/livekit/server-sdk-go/v2 v2.9.2-0.20250612220331-fb6301c37033
16+
github.com/livekit/protocol v1.39.4-0.20250718180328-5934235d53ec
17+
github.com/livekit/server-sdk-go/v2 v2.9.2-0.20250721202815-cc45e29e93d6
1818
github.com/moby/buildkit v0.22.0
1919
github.com/pion/rtcp v1.2.15
20-
github.com/pion/rtp v1.8.19
21-
github.com/pion/webrtc/v4 v4.1.2
20+
github.com/pion/rtp v1.8.20
21+
github.com/pion/webrtc/v4 v4.1.3
2222
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
2323
github.com/pkg/errors v0.9.1
2424
github.com/schollz/progressbar/v3 v3.18.0
@@ -34,7 +34,7 @@ require (
3434
)
3535

3636
require (
37-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250613105001-9f2d3c737feb.1 // indirect
37+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250625184727-c923a0c2a132.1 // indirect
3838
buf.build/go/protovalidate v0.13.1 // indirect
3939
buf.build/go/protoyaml v0.6.0 // indirect
4040
cel.dev/expr v0.24.0 // indirect
@@ -47,7 +47,6 @@ require (
4747
github.com/alecthomas/chroma/v2 v2.16.0 // indirect
4848
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
4949
github.com/atotto/clipboard v0.1.4 // indirect
50-
github.com/aws/smithy-go v1.22.4 // indirect
5150
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
5251
github.com/benbjohnson/clock v1.3.5 // indirect
5352
github.com/beorn7/perks v1.0.1 // indirect
@@ -116,7 +115,7 @@ require (
116115
github.com/jxskiss/base62 v1.1.0 // indirect
117116
github.com/kevinburke/ssh_config v1.2.0 // indirect
118117
github.com/klauspost/compress v1.18.0 // indirect
119-
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
118+
github.com/klauspost/cpuid/v2 v2.2.11 // indirect
120119
github.com/lithammer/shortuuid/v4 v4.2.0 // indirect
121120
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731 // indirect
122121
github.com/livekit/mediatransportutil v0.0.0-20250519131108-fb90f5acfded // indirect
@@ -147,7 +146,7 @@ require (
147146
github.com/pion/dtls/v3 v3.0.6 // indirect
148147
github.com/pion/ice/v4 v4.0.10 // indirect
149148
github.com/pion/interceptor v0.1.40 // indirect
150-
github.com/pion/logging v0.2.3 // indirect
149+
github.com/pion/logging v0.2.4 // indirect
151150
github.com/pion/mdns/v2 v2.0.7 // indirect
152151
github.com/pion/randutil v0.1.0 // indirect
153152
github.com/pion/sctp v1.8.39 // indirect
@@ -164,7 +163,7 @@ require (
164163
github.com/prometheus/common v0.64.0 // indirect
165164
github.com/prometheus/procfs v0.16.1 // indirect
166165
github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect
167-
github.com/redis/go-redis/v9 v9.10.0 // indirect
166+
github.com/redis/go-redis/v9 v9.11.0 // indirect
168167
github.com/rivo/uniseg v0.4.7 // indirect
169168
github.com/sajari/fuzzy v1.0.0 // indirect
170169
github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect

go.sum

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250613105001-9f2d3c737feb.1 h1:AUL6VF5YWL01j/1H/DQbPUSDkEwYqwVCNw7yhbpOxSQ=
2-
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250613105001-9f2d3c737feb.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U=
1+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250625184727-c923a0c2a132.1 h1:6tCo3lsKNLqUjRPhyc8JuYWYUiQkulufxSDOfG1zgWQ=
2+
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.6-20250625184727-c923a0c2a132.1/go.mod h1:avRlCjnFzl98VPaeCtJ24RrV/wwHFzB8sWXhj26+n/U=
33
buf.build/go/protovalidate v0.13.1 h1:6loHDTWdY/1qmqmt1MijBIKeN4T9Eajrqb9isT1W1s8=
44
buf.build/go/protovalidate v0.13.1/go.mod h1:C/QcOn/CjXRn5udUwYBiLs8y1TGy7RS+GOSKqjS77aU=
55
buf.build/go/protoyaml v0.6.0 h1:Nzz1lvcXF8YgNZXk+voPPwdU8FjDPTUV4ndNTXN0n2w=
@@ -47,8 +47,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
4747
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
4848
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
4949
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
50-
github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
51-
github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
5250
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
5351
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
5452
github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8=
@@ -263,8 +261,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI
263261
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
264262
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
265263
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
266-
github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
267-
github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
264+
github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU=
265+
github.com/klauspost/cpuid/v2 v2.2.11/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
268266
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
269267
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
270268
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -278,12 +276,12 @@ github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731 h1:9x+U2HGLrSw5AT
278276
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ=
279277
github.com/livekit/mediatransportutil v0.0.0-20250519131108-fb90f5acfded h1:ylZPdnlX1RW9Z15SD4mp87vT2D2shsk0hpLJwSPcq3g=
280278
github.com/livekit/mediatransportutil v0.0.0-20250519131108-fb90f5acfded/go.mod h1:mSNtYzSf6iY9xM3UX42VEI+STHvMgHmrYzEHPcdhB8A=
281-
github.com/livekit/protocol v1.39.3-0.20250620210232-022f52ebc520 h1:PDL0srf3NH7B6XnAHyRZkvcZq808R0rBTAvPr9W0NiQ=
282-
github.com/livekit/protocol v1.39.3-0.20250620210232-022f52ebc520/go.mod h1:W1zjNtf9w2EVlVfdfXjRp+K9Ng51KWKsBG7Sghk9x3Y=
279+
github.com/livekit/protocol v1.39.4-0.20250718180328-5934235d53ec h1:10lNMQWJp3DiF07euqC8OJX2sqt0GSf/KMlQWVQUbxA=
280+
github.com/livekit/protocol v1.39.4-0.20250718180328-5934235d53ec/go.mod h1:6l+zgRJZ9sY96LM7DA3EMcKQC5zsVyZVP73c+9wgvCA=
283281
github.com/livekit/psrpc v0.6.1-0.20250511053145-465289d72c3c h1:WwEr0YBejYbKzk8LSaO9h8h0G9MnE7shyDu8yXQWmEc=
284282
github.com/livekit/psrpc v0.6.1-0.20250511053145-465289d72c3c/go.mod h1:kmD+AZPkWu0MaXIMv57jhNlbiSZZ/Jx4bzlxBDVmJes=
285-
github.com/livekit/server-sdk-go/v2 v2.9.2-0.20250612220331-fb6301c37033 h1:5znH+FcwNGJMVfLVqrTcVMeurZGTcVnH+4l4o1wfU5k=
286-
github.com/livekit/server-sdk-go/v2 v2.9.2-0.20250612220331-fb6301c37033/go.mod h1:WwAZUKnkHsKC6oYw1JFTKOvqxKg82sOI9Nfe1hQRoSY=
283+
github.com/livekit/server-sdk-go/v2 v2.9.2-0.20250721202815-cc45e29e93d6 h1:yDUwV0NsnBo/jMDab2F/U4mfrz3/HdQhKLht6XmUAZA=
284+
github.com/livekit/server-sdk-go/v2 v2.9.2-0.20250721202815-cc45e29e93d6/go.mod h1:S1iZiPkaC2ird5hJH+11nwuWE2rX/5nWL/k50oRTnes=
287285
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
288286
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
289287
github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg=
@@ -361,16 +359,16 @@ github.com/pion/ice/v4 v4.0.10 h1:P59w1iauC/wPk9PdY8Vjl4fOFL5B+USq1+xbDcN6gT4=
361359
github.com/pion/ice/v4 v4.0.10/go.mod h1:y3M18aPhIxLlcO/4dn9X8LzLLSma84cx6emMSu14FGw=
362360
github.com/pion/interceptor v0.1.40 h1:e0BjnPcGpr2CFQgKhrQisBU7V3GXK6wrfYrGYaU6Jq4=
363361
github.com/pion/interceptor v0.1.40/go.mod h1:Z6kqH7M/FYirg3frjGJ21VLSRJGBXB/KqaTIrdqnOic=
364-
github.com/pion/logging v0.2.3 h1:gHuf0zpoh1GW67Nr6Gj4cv5Z9ZscU7g/EaoC/Ke/igI=
365-
github.com/pion/logging v0.2.3/go.mod h1:z8YfknkquMe1csOrxK5kc+5/ZPAzMxbKLX5aXpbpC90=
362+
github.com/pion/logging v0.2.4 h1:tTew+7cmQ+Mc1pTBLKH2puKsOvhm32dROumOZ655zB8=
363+
github.com/pion/logging v0.2.4/go.mod h1:DffhXTKYdNZU+KtJ5pyQDjvOAh/GsNSyv1lbkFbe3so=
366364
github.com/pion/mdns/v2 v2.0.7 h1:c9kM8ewCgjslaAmicYMFQIde2H9/lrZpjBkN8VwoVtM=
367365
github.com/pion/mdns/v2 v2.0.7/go.mod h1:vAdSYNAT0Jy3Ru0zl2YiW3Rm/fJCwIeM0nToenfOJKA=
368366
github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA=
369367
github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8=
370368
github.com/pion/rtcp v1.2.15 h1:LZQi2JbdipLOj4eBjK4wlVoQWfrZbh3Q6eHtWtJBZBo=
371369
github.com/pion/rtcp v1.2.15/go.mod h1:jlGuAjHMEXwMUHK78RgX0UmEJFV4zUKOFHR7OP+D3D0=
372-
github.com/pion/rtp v1.8.19 h1:jhdO/3XhL/aKm/wARFVmvTfq0lC/CvN1xwYKmduly3c=
373-
github.com/pion/rtp v1.8.19/go.mod h1:bAu2UFKScgzyFqvUKmbvzSdPr+NGbZtv6UB2hesqXBk=
370+
github.com/pion/rtp v1.8.20 h1:8zcyqohadZE8FCBeGdyEvHiclPIezcwRQH9zfapFyYI=
371+
github.com/pion/rtp v1.8.20/go.mod h1:bAu2UFKScgzyFqvUKmbvzSdPr+NGbZtv6UB2hesqXBk=
374372
github.com/pion/sctp v1.8.39 h1:PJma40vRHa3UTO3C4MyeJDQ+KIobVYRZQZ0Nt7SjQnE=
375373
github.com/pion/sctp v1.8.39/go.mod h1:cNiLdchXra8fHQwmIoqw0MbLLMs+f7uQ+dGMG2gWebE=
376374
github.com/pion/sdp/v3 v3.0.14 h1:1h7gBr9FhOWH5GjWWY5lcw/U85MtdcibTyt/o6RxRUI=
@@ -383,8 +381,8 @@ github.com/pion/transport/v3 v3.0.7 h1:iRbMH05BzSNwhILHoBoAPxoB9xQgOaJk+591KC9P1
383381
github.com/pion/transport/v3 v3.0.7/go.mod h1:YleKiTZ4vqNxVwh77Z0zytYi7rXHl7j6uPLGhhz9rwo=
384382
github.com/pion/turn/v4 v4.0.2 h1:ZqgQ3+MjP32ug30xAbD6Mn+/K4Sxi3SdNOTFf+7mpps=
385383
github.com/pion/turn/v4 v4.0.2/go.mod h1:pMMKP/ieNAG/fN5cZiN4SDuyKsXtNTr0ccN7IToA1zs=
386-
github.com/pion/webrtc/v4 v4.1.2 h1:mpuUo/EJ1zMNKGE79fAdYNFZBX790KE7kQQpLMjjR54=
387-
github.com/pion/webrtc/v4 v4.1.2/go.mod h1:xsCXiNAmMEjIdFxAYU0MbB3RwRieJsegSB2JZsGN+8U=
384+
github.com/pion/webrtc/v4 v4.1.3 h1:YZ67Boj9X/hk190jJZ8+HFGQ6DqSZ/fYP3sLAZv7c3c=
385+
github.com/pion/webrtc/v4 v4.1.3/go.mod h1:rsq+zQ82ryfR9vbb0L1umPJ6Ogq7zm8mcn9fcGnxomM=
388386
github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=
389387
github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=
390388
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
@@ -406,8 +404,8 @@ github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzM
406404
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
407405
github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++5Fg=
408406
github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
409-
github.com/redis/go-redis/v9 v9.10.0 h1:FxwK3eV8p/CQa0Ch276C7u2d0eNC9kCmAYQ7mCXCzVs=
410-
github.com/redis/go-redis/v9 v9.10.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
407+
github.com/redis/go-redis/v9 v9.11.0 h1:E3S08Gl/nJNn5vkxd2i78wZxWAPNZgUNTp8WIJUAiIs=
408+
github.com/redis/go-redis/v9 v9.11.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
411409
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
412410
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
413411
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=

install-cli.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ abort() {
3737
# i.e. 1.0.0
3838
get_latest_version()
3939
{
40-
latest_version=$(curl -s https://api.github.com/repos/livekit/$REPO/releases/latest | grep -oP '"tarball_url": ".*/tarball/v\K([^/]*)(?=")')
40+
latest_version=$(curl -s https://api.github.com/repos/livekit/$REPO/releases/latest | jq -r '.tag_name' | sed 's/^v//')
4141
printf "%s" "$latest_version"
4242
}
4343

0 commit comments

Comments
 (0)