Skip to content

Commit

Permalink
Merge pull request #18379 from giuseppe/small-fixes
Browse files Browse the repository at this point in the history
some small fixes
  • Loading branch information
openshift-merge-robot authored May 1, 2023
2 parents 22047c6 + 7087089 commit cda2b6e
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 36 deletions.
30 changes: 11 additions & 19 deletions cmd/podman/kube/play.go
Original file line number Diff line number Diff line change
Expand Up @@ -346,34 +346,26 @@ func playKube(cmd *cobra.Command, args []string) error {
}

func readerFromArg(fileName string) (*bytes.Reader, error) {
errURL := parse.ValidURL(fileName)
if fileName == "-" { // Read from stdin
data, err := io.ReadAll(os.Stdin)
if err != nil {
return nil, err
}
return bytes.NewReader(data), nil
}
if errURL == nil {
var reader io.Reader
switch {
case fileName == "-": // Read from stdin
reader = os.Stdin
case parse.ValidURL(fileName) == nil:
response, err := http.Get(fileName)
if err != nil {
return nil, err
}
defer response.Body.Close()

data, err := io.ReadAll(response.Body)
reader = response.Body
default:
f, err := os.Open(fileName)
if err != nil {
return nil, err
}
return bytes.NewReader(data), nil
defer f.Close()
reader = f
}
f, err := os.Open(fileName)
if err != nil {
return nil, err
}
defer f.Close()

data, err := io.ReadAll(f)
data, err := io.ReadAll(reader)
if err != nil {
return nil, err
}
Expand Down
41 changes: 27 additions & 14 deletions libpod/container_internal.go
Original file line number Diff line number Diff line change
Expand Up @@ -1848,9 +1848,10 @@ func (c *Container) cleanupStorage() error {
if c.valid {
if err := c.save(); err != nil {
if cleanupErr != nil {
logrus.Errorf("Unmounting container %s: %v", c.ID(), cleanupErr)
logrus.Errorf("Unmounting container %s: %v", c.ID(), err)
} else {
cleanupErr = err
}
cleanupErr = err
}
}
}
Expand All @@ -1861,29 +1862,38 @@ func (c *Container) cleanupStorage() error {
if err := overlay.Unmount(overlayBasePath); err != nil {
if cleanupErr != nil {
logrus.Errorf("Failed to clean up overlay mounts for %s: %v", c.ID(), err)
} else {
cleanupErr = fmt.Errorf("failed to clean up overlay mounts for %s: %w", c.ID(), err)
}
cleanupErr = err
}
}
if c.config.RootfsMapping != nil {
if err := unix.Unmount(c.config.Rootfs, 0); err != nil {
logrus.Errorf("Unmounting idmapped rootfs for container %s after mount error: %v", c.ID(), err)
if err := unix.Unmount(c.config.Rootfs, 0); err != nil && err != unix.EINVAL {
if cleanupErr != nil {
logrus.Errorf("Unmounting idmapped rootfs for container %s after mount error: %v", c.ID(), err)
} else {
cleanupErr = fmt.Errorf("unmounting idmapped rootfs for container %s after mount error: %w", c.ID(), err)
}
}
}

for _, containerMount := range c.config.Mounts {
if err := c.unmountSHM(containerMount); err != nil {
if cleanupErr != nil {
logrus.Errorf("Unmounting container %s: %v", c.ID(), cleanupErr)
logrus.Errorf("Unmounting container %s: %v", c.ID(), err)
} else {
cleanupErr = fmt.Errorf("unmounting container %s: %w", c.ID(), err)
}
cleanupErr = err
}
}

if err := c.cleanupOverlayMounts(); err != nil {
// If the container can't remove content report the error
logrus.Errorf("Failed to clean up overlay mounts for %s: %v", c.ID(), err)
cleanupErr = err
if cleanupErr != nil {
logrus.Errorf("Failed to clean up overlay mounts for %s: %v", c.ID(), err)
} else {
cleanupErr = fmt.Errorf("failed to clean up overlay mounts for %s: %w", c.ID(), err)
}
}

if c.config.Rootfs != "" {
Expand All @@ -1901,8 +1911,9 @@ func (c *Container) cleanupStorage() error {
} else {
if cleanupErr != nil {
logrus.Errorf("Cleaning up container %s storage: %v", c.ID(), cleanupErr)
} else {
cleanupErr = fmt.Errorf("cleaning up container %s storage: %w", c.ID(), cleanupErr)
}
cleanupErr = err
}
}

Expand All @@ -1911,9 +1922,10 @@ func (c *Container) cleanupStorage() error {
vol, err := c.runtime.state.Volume(v.Name)
if err != nil {
if cleanupErr != nil {
logrus.Errorf("Unmounting container %s: %v", c.ID(), cleanupErr)
logrus.Errorf("Retrieving named volume %s for container %s: %v", v.Name, c.ID(), err)
} else {
cleanupErr = fmt.Errorf("retrieving named volume %s for container %s: %w", v.Name, c.ID(), err)
}
cleanupErr = fmt.Errorf("retrieving named volume %s for container %s: %w", v.Name, c.ID(), err)

// We need to try and unmount every volume, so continue
// if they fail.
Expand All @@ -1924,9 +1936,10 @@ func (c *Container) cleanupStorage() error {
vol.lock.Lock()
if err := vol.unmount(false); err != nil {
if cleanupErr != nil {
logrus.Errorf("Unmounting container %s: %v", c.ID(), cleanupErr)
logrus.Errorf("Unmounting volume %s for container %s: %v", vol.Name(), c.ID(), err)
} else {
cleanupErr = fmt.Errorf("unmounting volume %s for container %s: %w", vol.Name(), c.ID(), err)
}
cleanupErr = fmt.Errorf("unmounting volume %s for container %s: %w", vol.Name(), c.ID(), err)
}
vol.lock.Unlock()
}
Expand Down
2 changes: 1 addition & 1 deletion test/system/251-system-service.bats
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ function teardown() {
basic_teardown
}

@test "podman systerm service <bad_scheme_uri> returns error" {
@test "podman system service <bad_scheme_uri> returns error" {
skip_if_remote "podman system service unavailable over remote"
run_podman 125 system service localhost:9292
is "$output" "Error: API Service endpoint scheme \"localhost\" is not supported. Try tcp://localhost:9292 or unix:/localhost:9292"
Expand Down
3 changes: 1 addition & 2 deletions test/system/700-play.bats
Original file line number Diff line number Diff line change
Expand Up @@ -480,8 +480,7 @@ _EOF
is "$output" ".*Error: inspecting object: no such object: \"test_pod-test\""

run_podman pod rm -a -f
run_podman rm -a -f
run_podman rm -f -t0 myyaml
run_podman rm -a -f -t0
}

@test "podman play with init container" {
Expand Down

0 comments on commit cda2b6e

Please sign in to comment.