github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/cmd/podmanV2/system/varlink.go (about) 1 package system 2 3 import ( 4 "time" 5 6 "github.com/containers/libpod/cmd/podmanV2/registry" 7 "github.com/containers/libpod/pkg/domain/entities" 8 "github.com/spf13/cobra" 9 ) 10 11 var ( 12 varlinkDescription = `Run varlink interface. Podman varlink listens on the specified unix domain socket for incoming connects. 13 14 Tools speaking varlink protocol can remotely manage pods, containers and images. 15 ` 16 varlinkCmd = &cobra.Command{ 17 Use: "varlink [flags] [URI]", 18 Args: cobra.MinimumNArgs(1), 19 Short: "Run varlink interface", 20 Long: varlinkDescription, 21 PreRunE: preRunE, 22 RunE: varlinkE, 23 Example: `podman varlink unix:/run/podman/io.podman 24 podman varlink --timeout 5000 unix:/run/podman/io.podman`, 25 } 26 varlinkArgs = struct { 27 Timeout int64 28 }{} 29 ) 30 31 func init() { 32 registry.Commands = append(registry.Commands, registry.CliCommand{ 33 Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode}, 34 Command: varlinkCmd, 35 }) 36 varlinkCmd.SetHelpTemplate(registry.HelpTemplate()) 37 varlinkCmd.SetUsageTemplate(registry.UsageTemplate()) 38 39 flags := varlinkCmd.Flags() 40 flags.Int64VarP(&varlinkArgs.Timeout, "time", "t", 1000, "Time until the varlink session expires in milliseconds. Use 0 to disable the timeout") 41 flags.Int64Var(&varlinkArgs.Timeout, "timeout", 1000, "Time until the varlink session expires in milliseconds. Use 0 to disable the timeout") 42 43 } 44 45 func varlinkE(cmd *cobra.Command, args []string) error { 46 uri := registry.DefaultVarlinkAddress 47 if len(args) > 0 { 48 uri = args[0] 49 } 50 opts := entities.ServiceOptions{ 51 URI: uri, 52 Timeout: time.Duration(varlinkArgs.Timeout) * time.Second, 53 Command: cmd, 54 } 55 return registry.ContainerEngine().VarlinkService(registry.GetContext(), opts) 56 }