summaryrefslogtreecommitdiff
path: root/cmd/podman/machine
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2022-05-04 14:47:05 +0200
committeropenshift-cherrypick-robot <>2022-05-04 15:30:29 +0000
commit9e83826d59a217dafb1c078eecf181b6fb409183 (patch)
treef1900cd21226f18e7be5f71fcd2635d5fbd66e84 /cmd/podman/machine
parent02eef6c4bf5b423c5f97a9883d21f2b4152a45ce (diff)
downloadpodman-9e83826d59a217dafb1c078eecf181b6fb409183.tar.gz
podman-9e83826d59a217dafb1c078eecf181b6fb409183.tar.bz2
podman-9e83826d59a217dafb1c078eecf181b6fb409183.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/podman/machine')
-rw-r--r--cmd/podman/machine/machine.go32
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()