diff options
author | Paul Holzinger <pholzing@redhat.com> | 2022-05-04 14:47:05 +0200 |
---|---|---|
committer | Paul Holzinger <pholzing@redhat.com> | 2022-05-04 15:08:25 +0200 |
commit | a5800c78fddba95388e9f61611c5335a2cdc03c3 (patch) | |
tree | 476fff417b6c62c221e559b9cfd97a7bee1aab08 /cmd | |
parent | 1975975cf4bcf9ea16f5a49909f1357ec881e615 (diff) | |
download | podman-a5800c78fddba95388e9f61611c5335a2cdc03c3.tar.gz podman-a5800c78fddba95388e9f61611c5335a2cdc03c3.tar.bz2 podman-a5800c78fddba95388e9f61611c5335a2cdc03c3.zip |
machine events: only open sockets when needed
We should only open the socket when needed and not always at init time.
[NO NEW TESTS NEEDED]
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/podman/machine/machine.go | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/cmd/podman/machine/machine.go b/cmd/podman/machine/machine.go index 4c566b11f..cf7542389 100644 --- a/cmd/podman/machine/machine.go +++ b/cmd/podman/machine/machine.go @@ -26,7 +26,6 @@ var ( // Pull in configured json library json = registry.JSONLibrary() - sockPaths []string // Paths to unix domain sockets for publishing openEventSock sync.Once // Singleton support for opening sockets as needed sockets []net.Conn // Opened sockets, if any @@ -35,7 +34,7 @@ var ( Use: "machine", Short: "Manage a virtual machine", Long: "Manage a virtual machine. Virtual machines are used to run Podman.", - PersistentPreRunE: initMachineEvents, + PersistentPreRunE: validate.NoOp, PersistentPostRunE: closeMachineEvents, RunE: validate.SubCommandExists, } @@ -79,17 +78,10 @@ func getMachines(toComplete string) ([]string, cobra.ShellCompDirective) { return suggestions, cobra.ShellCompDirectiveNoFileComp } -func initMachineEvents(cmd *cobra.Command, _ []string) error { - logrus.Debugf("Called machine %s.PersistentPreRunE(%s)", cmd.Name(), strings.Join(os.Args, " ")) - +func initMachineEvents() { sockPaths, err := resolveEventSock() if err != nil { - return err - } - - // No sockets found, so no need to publish events... - if len(sockPaths) == 0 { - return nil + logrus.Warnf("Failed to resolve machine event sockets, machine events will not be published: %v", err) } for _, path := range sockPaths { @@ -101,7 +93,6 @@ func initMachineEvents(cmd *cobra.Command, _ []string) error { logrus.Debugf("Machine event socket %q found", path) sockets = append(sockets, conn) } - return nil } func resolveEventSock() ([]string, error) { @@ -145,22 +136,7 @@ func resolveEventSock() ([]string, error) { } func newMachineEvent(status events.Status, event events.Event) { - openEventSock.Do(func() { - // No sockets where found, so no need to publish events... - if len(sockPaths) == 0 { - return - } - - for _, path := range sockPaths { - conn, err := (&net.Dialer{}).DialContext(registry.Context(), "unix", path) - if err != nil { - logrus.Warnf("Failed to open event socket %q: %v", path, err) - continue - } - logrus.Debugf("Machine event socket %q found", path) - sockets = append(sockets, conn) - } - }) + openEventSock.Do(initMachineEvents) event.Status = status event.Time = time.Now() |