diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2022-05-04 13:14:13 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-04 13:14:13 -0400 |
commit | c4357f0f7b7a032908abfab358616d82163eaf9e (patch) | |
tree | f1900cd21226f18e7be5f71fcd2635d5fbd66e84 | |
parent | 02eef6c4bf5b423c5f97a9883d21f2b4152a45ce (diff) | |
parent | 9e83826d59a217dafb1c078eecf181b6fb409183 (diff) | |
download | podman-c4357f0f7b7a032908abfab358616d82163eaf9e.tar.gz podman-c4357f0f7b7a032908abfab358616d82163eaf9e.tar.bz2 podman-c4357f0f7b7a032908abfab358616d82163eaf9e.zip |
Merge pull request #14114 from openshift-cherrypick-robot/cherry-pick-14108-to-v4.1
[v4.1] machine events: only open sockets when needed
-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() |