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  }