Skip to content

Commit

Permalink
Merge pull request containers#14114 from openshift-cherrypick-robot/c…
Browse files Browse the repository at this point in the history
…herry-pick-14108-to-v4.1

[v4.1] machine events: only open sockets when needed
  • Loading branch information
openshift-merge-robot authored May 4, 2022
2 parents 02eef6c + 9e83826 commit c4357f0
Showing 1 changed file with 4 additions and 28 deletions.
32 changes: 4 additions & 28 deletions cmd/podman/machine/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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,
}
Expand Down Expand Up @@ -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 {
Expand All @@ -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) {
Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit c4357f0

Please sign in to comment.