Skip to content

Commit

Permalink
Merge pull request containers#12124 from giuseppe/allow-devpts-options
Browse files Browse the repository at this point in the history
volumes: allow more options for devpts
  • Loading branch information
openshift-merge-robot authored Oct 28, 2021
2 parents d2147ba + 4e9e6f2 commit f7ca045
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 5 deletions.
10 changes: 10 additions & 0 deletions docs/source/markdown/podman-create.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,16 @@ Current supported mount TYPEs are **bind**, **volume**, **image**, **tmpfs** and

. U, chown: true or false (default). Change recursively the owner and group of the source volume based on the UID and GID of the container.

Options specific to devpts:

· uid: UID of the file owner (default 0).

· gid: GID of the file owner (default 0).

· mode: permission mask for the file (default 600).

· max: maximum number of PTYs (default 1048576).

#### **--name**=*name*

Assign a name to the container
Expand Down
10 changes: 10 additions & 0 deletions docs/source/markdown/podman-run.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,16 @@ Current supported mount TYPEs are **bind**, **volume**, **image**, **tmpfs** and

. U, chown: true or false (default). Change recursively the owner and group of the source volume based on the UID and GID of the container.

Options specific to devpts:

· uid: UID of the file owner (default 0).

· gid: GID of the file owner (default 0).

· mode: permission mask for the file (default 600).

· max: maximum number of PTYs (default 1048576).

#### **--name**=*name*

Assign a name to the container.
Expand Down
12 changes: 7 additions & 5 deletions pkg/specgenutil/volumes.go
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ func getBindMount(args []string) (spec.Mount, error) {
// Since Docker ignores this option so shall we.
continue
default:
return newMount, errors.Wrapf(util.ErrBadMntOption, kv[0])
return newMount, errors.Wrapf(util.ErrBadMntOption, "%s", kv[0])
}
}

Expand Down Expand Up @@ -460,7 +460,7 @@ func getTmpfsMount(args []string) (spec.Mount, error) {
// Since Docker ignores this option so shall we.
continue
default:
return newMount, errors.Wrapf(util.ErrBadMntOption, kv[0])
return newMount, errors.Wrapf(util.ErrBadMntOption, "%s", kv[0])
}
}

Expand All @@ -483,6 +483,8 @@ func getDevptsMount(args []string) (spec.Mount, error) {
for _, val := range args {
kv := strings.SplitN(val, "=", 2)
switch kv[0] {
case "uid", "gid", "mode", "ptxmode", "newinstance", "max":
newMount.Options = append(newMount.Options, val)
case "target", "dst", "destination":
if len(kv) == 1 {
return newMount, errors.Wrapf(optionArgError, kv[0])
Expand All @@ -493,7 +495,7 @@ func getDevptsMount(args []string) (spec.Mount, error) {
newMount.Destination = filepath.Clean(kv[1])
setDest = true
default:
return newMount, errors.Wrapf(util.ErrBadMntOption, kv[0])
return newMount, errors.Wrapf(util.ErrBadMntOption, "%s", kv[0])
}
}

Expand Down Expand Up @@ -573,7 +575,7 @@ func getNamedVolume(args []string) (*specgen.NamedVolume, error) {
// Since Docker ignores this option so shall we.
continue
default:
return nil, errors.Wrapf(util.ErrBadMntOption, kv[0])
return nil, errors.Wrapf(util.ErrBadMntOption, "%s", kv[0])
}
}

Expand Down Expand Up @@ -624,7 +626,7 @@ func getImageVolume(args []string) (*specgen.ImageVolume, error) {
// Since Docker ignores this option so shall we.
continue
default:
return nil, errors.Wrapf(util.ErrBadMntOption, kv[0])
return nil, errors.Wrapf(util.ErrBadMntOption, "%s", kv[0])
}
}

Expand Down
8 changes: 8 additions & 0 deletions test/e2e/run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1198,6 +1198,14 @@ USER mail`, BB)
Expect(session.OutputToString()).To(ContainSubstring("devpts"))
})

It("podman run --mount type=devpts,target=/dev/pts with uid, gid and mode", func() {
// runc doesn't seem to honor uid= so avoid testing it
session := podmanTest.Podman([]string{"run", "-t", "--mount", "type=devpts,target=/dev/pts,uid=1000,gid=1001,mode=123", fedoraMinimal, "stat", "-c%g-%a", "/dev/pts/0"})
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
Expect(session.OutputToString()).To(ContainSubstring("1001-123"))
})

It("podman run --pod automatically", func() {
session := podmanTest.Podman([]string{"run", "-d", "--pod", "new:foobar", ALPINE, "nc", "-l", "-p", "8686"})
session.WaitWithDefaultTimeout()
Expand Down

0 comments on commit f7ca045

Please sign in to comment.