1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Copy Inslice() to those parts that use it

Signed-off-by: Chao Wang <wangchao.fnst@cn.fujitsu.com>
This commit is contained in:
Chao Wang 2017-11-10 13:18:48 +08:00
parent dc90c3047e
commit 5c154cfac8
7 changed files with 49 additions and 47 deletions

View file

@ -6,7 +6,6 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/docker/docker/pkg/stringutils"
"github.com/syndtr/gocapability/capability" "github.com/syndtr/gocapability/capability"
) )
@ -69,6 +68,17 @@ func GetAllCapabilities() []string {
return output return output
} }
// inSlice tests whether a string is contained in a slice of strings or not.
// Comparison is case insensitive
func inSlice(slice []string, s string) bool {
for _, ss := range slice {
if strings.ToLower(s) == strings.ToLower(ss) {
return true
}
}
return false
}
// TweakCapabilities can tweak capabilities by adding or dropping capabilities // TweakCapabilities can tweak capabilities by adding or dropping capabilities
// based on the basics capabilities. // based on the basics capabilities.
func TweakCapabilities(basics, adds, drops []string) ([]string, error) { func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
@ -86,17 +96,17 @@ func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
continue continue
} }
if !stringutils.InSlice(allCaps, "CAP_"+cap) { if !inSlice(allCaps, "CAP_"+cap) {
return nil, fmt.Errorf("Unknown capability drop: %q", cap) return nil, fmt.Errorf("Unknown capability drop: %q", cap)
} }
} }
// handle --cap-add=all // handle --cap-add=all
if stringutils.InSlice(adds, "all") { if inSlice(adds, "all") {
basics = allCaps basics = allCaps
} }
if !stringutils.InSlice(drops, "all") { if !inSlice(drops, "all") {
for _, cap := range basics { for _, cap := range basics {
// skip `all` already handled above // skip `all` already handled above
if strings.ToLower(cap) == "all" { if strings.ToLower(cap) == "all" {
@ -104,7 +114,7 @@ func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
} }
// if we don't drop `all`, add back all the non-dropped caps // if we don't drop `all`, add back all the non-dropped caps
if !stringutils.InSlice(drops, cap[4:]) { if !inSlice(drops, cap[4:]) {
newCaps = append(newCaps, strings.ToUpper(cap)) newCaps = append(newCaps, strings.ToUpper(cap))
} }
} }
@ -118,12 +128,12 @@ func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
cap = "CAP_" + cap cap = "CAP_" + cap
if !stringutils.InSlice(allCaps, cap) { if !inSlice(allCaps, cap) {
return nil, fmt.Errorf("Unknown capability to add: %q", cap) return nil, fmt.Errorf("Unknown capability to add: %q", cap)
} }
// add cap if not already in the list // add cap if not already in the list
if !stringutils.InSlice(newCaps, cap) { if !inSlice(newCaps, cap) {
newCaps = append(newCaps, strings.ToUpper(cap)) newCaps = append(newCaps, strings.ToUpper(cap))
} }
} }

View file

@ -18,7 +18,6 @@ import (
"github.com/docker/docker/oci" "github.com/docker/docker/oci"
"github.com/docker/docker/pkg/idtools" "github.com/docker/docker/pkg/idtools"
"github.com/docker/docker/pkg/mount" "github.com/docker/docker/pkg/mount"
"github.com/docker/docker/pkg/stringutils"
"github.com/docker/docker/volume" "github.com/docker/docker/volume"
"github.com/opencontainers/runc/libcontainer/apparmor" "github.com/opencontainers/runc/libcontainer/apparmor"
"github.com/opencontainers/runc/libcontainer/cgroups" "github.com/opencontainers/runc/libcontainer/cgroups"
@ -522,6 +521,17 @@ var (
} }
) )
// inSlice tests whether a string is contained in a slice of strings or not.
// Comparison is case sensitive
func inSlice(slice []string, s string) bool {
for _, ss := range slice {
if s == ss {
return true
}
}
return false
}
func setMounts(daemon *Daemon, s *specs.Spec, c *container.Container, mounts []container.Mount) error { func setMounts(daemon *Daemon, s *specs.Spec, c *container.Container, mounts []container.Mount) error {
userMounts := make(map[string]struct{}) userMounts := make(map[string]struct{})
for _, m := range mounts { for _, m := range mounts {
@ -632,7 +642,7 @@ func setMounts(daemon *Daemon, s *specs.Spec, c *container.Container, mounts []c
continue continue
} }
if _, ok := userMounts[m.Destination]; !ok { if _, ok := userMounts[m.Destination]; !ok {
if !stringutils.InSlice(m.Options, "ro") { if !inSlice(m.Options, "ro") {
s.Mounts[i].Options = append(s.Mounts[i].Options, "ro") s.Mounts[i].Options = append(s.Mounts[i].Options, "ro")
} }
} }

View file

@ -10,8 +10,8 @@ import (
"github.com/docker/docker/api/types/versions/v1p20" "github.com/docker/docker/api/types/versions/v1p20"
"github.com/docker/docker/client" "github.com/docker/docker/client"
"github.com/docker/docker/integration-cli/checker" "github.com/docker/docker/integration-cli/checker"
"github.com/docker/docker/pkg/stringutils"
"github.com/go-check/check" "github.com/go-check/check"
"github.com/stretchr/testify/assert"
) )
func (s *DockerSuite) TestInspectAPIContainerResponse(c *check.C) { func (s *DockerSuite) TestInspectAPIContainerResponse(c *check.C) {
@ -115,8 +115,8 @@ func (s *DockerSuite) TestInspectAPIImageResponse(c *check.C) {
c.Assert(err, checker.IsNil) c.Assert(err, checker.IsNil)
c.Assert(imageJSON.RepoTags, checker.HasLen, 2) c.Assert(imageJSON.RepoTags, checker.HasLen, 2)
c.Assert(stringutils.InSlice(imageJSON.RepoTags, "busybox:latest"), checker.Equals, true) assert.Contains(c, imageJSON.RepoTags, "busybox:latest")
c.Assert(stringutils.InSlice(imageJSON.RepoTags, "busybox:mytag"), checker.Equals, true) assert.Contains(c, imageJSON.RepoTags, "busybox:mytag")
} }
// #17131, #17139, #17173 // #17131, #17139, #17173

View file

@ -14,9 +14,9 @@ import (
"github.com/docker/docker/integration-cli/checker" "github.com/docker/docker/integration-cli/checker"
"github.com/docker/docker/integration-cli/cli" "github.com/docker/docker/integration-cli/cli"
"github.com/docker/docker/integration-cli/cli/build" "github.com/docker/docker/integration-cli/cli/build"
"github.com/docker/docker/pkg/stringutils"
"github.com/go-check/check" "github.com/go-check/check"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
"github.com/stretchr/testify/assert"
) )
var ( var (
@ -403,7 +403,7 @@ func (s *DockerRegistrySuite) TestInspectImageWithDigests(c *check.C) {
c.Assert(err, checker.IsNil) c.Assert(err, checker.IsNil)
c.Assert(imageJSON, checker.HasLen, 1) c.Assert(imageJSON, checker.HasLen, 1)
c.Assert(imageJSON[0].RepoDigests, checker.HasLen, 1) c.Assert(imageJSON[0].RepoDigests, checker.HasLen, 1)
c.Assert(stringutils.InSlice(imageJSON[0].RepoDigests, imageReference), checker.Equals, true) assert.Contains(c, imageJSON[0].RepoDigests, imageReference)
} }
func (s *DockerRegistrySuite) TestPsListContainersFilterAncestorImageByDigest(c *check.C) { func (s *DockerRegistrySuite) TestPsListContainersFilterAncestorImageByDigest(c *check.C) {

View file

@ -41,17 +41,6 @@ func Truncate(s string, maxlen int) string {
return string(r[:maxlen]) return string(r[:maxlen])
} }
// InSlice tests whether a string is contained in a slice of strings or not.
// Comparison is case insensitive
func InSlice(slice []string, s string) bool {
for _, ss := range slice {
if strings.ToLower(s) == strings.ToLower(ss) {
return true
}
}
return false
}
func quote(word string, buf *bytes.Buffer) { func quote(word string, buf *bytes.Buffer) {
// Bail out early for "simple" strings // Bail out early for "simple" strings
if word != "" && !strings.ContainsAny(word, "\\'\"`${[|&;<>()~*?! \t\n") { if word != "" && !strings.ContainsAny(word, "\\'\"`${[|&;<>()~*?! \t\n") {

View file

@ -77,23 +77,6 @@ func TestTruncate(t *testing.T) {
} }
} }
func TestInSlice(t *testing.T) {
slice := []string{"t🐳st", "in", "slice"}
test := InSlice(slice, "t🐳st")
if !test {
t.Fatalf("Expected string t🐳st to be in slice")
}
test = InSlice(slice, "SLICE")
if !test {
t.Fatalf("Expected string SLICE to be in slice")
}
test = InSlice(slice, "notinslice")
if test {
t.Fatalf("Expected string notinslice not to be in slice")
}
}
func TestShellQuoteArgumentsEmpty(t *testing.T) { func TestShellQuoteArgumentsEmpty(t *testing.T) {
actual := ShellQuoteArguments([]string{}) actual := ShellQuoteArguments([]string{})
expected := "" expected := ""

View file

@ -8,7 +8,6 @@ import (
"fmt" "fmt"
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
"github.com/docker/docker/pkg/stringutils"
"github.com/opencontainers/runtime-spec/specs-go" "github.com/opencontainers/runtime-spec/specs-go"
libseccomp "github.com/seccomp/libseccomp-golang" libseccomp "github.com/seccomp/libseccomp-golang"
) )
@ -39,6 +38,17 @@ var nativeToSeccomp = map[string]types.Arch{
"s390x": types.ArchS390X, "s390x": types.ArchS390X,
} }
// inSlice tests whether a string is contained in a slice of strings or not.
// Comparison is case sensitive
func inSlice(slice []string, s string) bool {
for _, ss := range slice {
if s == ss {
return true
}
}
return false
}
func setupSeccomp(config *types.Seccomp, rs *specs.Spec) (*specs.LinuxSeccomp, error) { func setupSeccomp(config *types.Seccomp, rs *specs.Spec) (*specs.LinuxSeccomp, error) {
if config == nil { if config == nil {
return nil, nil return nil, nil
@ -89,25 +99,25 @@ Loop:
// Loop through all syscall blocks and convert them to libcontainer format after filtering them // Loop through all syscall blocks and convert them to libcontainer format after filtering them
for _, call := range config.Syscalls { for _, call := range config.Syscalls {
if len(call.Excludes.Arches) > 0 { if len(call.Excludes.Arches) > 0 {
if stringutils.InSlice(call.Excludes.Arches, arch) { if inSlice(call.Excludes.Arches, arch) {
continue Loop continue Loop
} }
} }
if len(call.Excludes.Caps) > 0 { if len(call.Excludes.Caps) > 0 {
for _, c := range call.Excludes.Caps { for _, c := range call.Excludes.Caps {
if stringutils.InSlice(rs.Process.Capabilities.Effective, c) { if inSlice(rs.Process.Capabilities.Effective, c) {
continue Loop continue Loop
} }
} }
} }
if len(call.Includes.Arches) > 0 { if len(call.Includes.Arches) > 0 {
if !stringutils.InSlice(call.Includes.Arches, arch) { if !inSlice(call.Includes.Arches, arch) {
continue Loop continue Loop
} }
} }
if len(call.Includes.Caps) > 0 { if len(call.Includes.Caps) > 0 {
for _, c := range call.Includes.Caps { for _, c := range call.Includes.Caps {
if !stringutils.InSlice(rs.Process.Capabilities.Effective, c) { if !inSlice(rs.Process.Capabilities.Effective, c) {
continue Loop continue Loop
} }
} }