Merge pull request #34625 from dnephin/more-linters

Add interfacer and unconvert linters
This commit is contained in:
Yong Tang 2017-09-01 08:46:08 -07:00 committed by GitHub
commit cb952bf006
34 changed files with 57 additions and 55 deletions

View File

@ -18,7 +18,7 @@ type execBackend interface {
ContainerExecCreate(name string, config *types.ExecConfig) (string, error) ContainerExecCreate(name string, config *types.ExecConfig) (string, error)
ContainerExecInspect(id string) (*backend.ExecInspect, error) ContainerExecInspect(id string) (*backend.ExecInspect, error)
ContainerExecResize(name string, height, width int) error ContainerExecResize(name string, height, width int) error
ContainerExecStart(ctx context.Context, name string, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) error ContainerExecStart(ctx context.Context, name string, stdin io.Reader, stdout io.Writer, stderr io.Writer) error
ExecExists(name string) (bool, error) ExecExists(name string) (bool, error)
} }

View File

@ -70,7 +70,7 @@ func (s *containerRouter) getContainersStats(ctx context.Context, w http.Respons
config := &backend.ContainerStatsConfig{ config := &backend.ContainerStatsConfig{
Stream: stream, Stream: stream,
OutStream: w, OutStream: w,
Version: string(httputils.VersionFromContext(ctx)), Version: httputils.VersionFromContext(ctx),
} }
return s.backend.ContainerStats(ctx, vars["name"], config) return s.backend.ContainerStats(ctx, vars["name"], config)

View File

@ -66,9 +66,7 @@ func (s *imageRouter) postCommit(ctx context.Context, w http.ResponseWriter, r *
return err return err
} }
return httputils.WriteJSON(w, http.StatusCreated, &types.IDResponse{ return httputils.WriteJSON(w, http.StatusCreated, &types.IDResponse{ID: imgID})
ID: string(imgID),
})
} }
// Creates an image from Pull or from Import // Creates an image from Pull or from Import

View File

@ -2,6 +2,7 @@ package swarm
import ( import (
"fmt" "fmt"
"io"
"net/http" "net/http"
"github.com/docker/docker/api/server/httputils" "github.com/docker/docker/api/server/httputils"
@ -12,7 +13,7 @@ import (
// swarmLogs takes an http response, request, and selector, and writes the logs // swarmLogs takes an http response, request, and selector, and writes the logs
// specified by the selector to the response // specified by the selector to the response
func (sr *swarmRouter) swarmLogs(ctx context.Context, w http.ResponseWriter, r *http.Request, selector *backend.LogSelector) error { func (sr *swarmRouter) swarmLogs(ctx context.Context, w io.Writer, r *http.Request, selector *backend.LogSelector) error {
// Args are validated before the stream starts because when it starts we're // Args are validated before the stream starts because when it starts we're
// sending HTTP 200 by writing an empty chunk of data to tell the client that // sending HTTP 200 by writing an empty chunk of data to tell the client that
// daemon is going to stream. By sending this initial HTTP 200 we can't report // daemon is going to stream. By sending this initial HTTP 200 we can't report

View File

@ -555,7 +555,7 @@ func parseOptInterval(f *Flag) (time.Duration, error) {
if err != nil { if err != nil {
return 0, err return 0, err
} }
if d < time.Duration(container.MinimumDuration) { if d < container.MinimumDuration {
return 0, fmt.Errorf("Interval %#v cannot be less than %s", f.name, container.MinimumDuration) return 0, fmt.Errorf("Interval %#v cannot be less than %s", f.name, container.MinimumDuration)
} }
return d, nil return d, nil

View File

@ -348,7 +348,7 @@ func (b *Builder) probeCache(dispatchState *dispatchState, runConfig *container.
} }
fmt.Fprint(b.Stdout, " ---> Using cache\n") fmt.Fprint(b.Stdout, " ---> Using cache\n")
dispatchState.imageID = string(cachedID) dispatchState.imageID = cachedID
b.buildStages.update(dispatchState.imageID) b.buildStages.update(dispatchState.imageID)
return true, nil return true, nil
} }

View File

@ -110,7 +110,7 @@ func GetWithStatusError(address string) (resp *http.Response, err error) {
// - an io.Reader for the response body // - an io.Reader for the response body
// - an error value which will be non-nil either when something goes wrong while // - an error value which will be non-nil either when something goes wrong while
// reading bytes from r or when the detected content-type is not acceptable. // reading bytes from r or when the detected content-type is not acceptable.
func inspectResponse(ct string, r io.ReadCloser, clen int64) (string, io.ReadCloser, error) { func inspectResponse(ct string, r io.Reader, clen int64) (string, io.ReadCloser, error) {
plen := clen plen := clen
if plen <= 0 || plen > maxPreambleLength { if plen <= 0 || plen > maxPreambleLength {
plen = maxPreambleLength plen = maxPreambleLength
@ -119,10 +119,10 @@ func inspectResponse(ct string, r io.ReadCloser, clen int64) (string, io.ReadClo
preamble := make([]byte, plen, plen) preamble := make([]byte, plen, plen)
rlen, err := r.Read(preamble) rlen, err := r.Read(preamble)
if rlen == 0 { if rlen == 0 {
return ct, r, errors.New("empty response") return ct, ioutil.NopCloser(r), errors.New("empty response")
} }
if err != nil && err != io.EOF { if err != nil && err != io.EOF {
return ct, r, err return ct, ioutil.NopCloser(r), err
} }
preambleR := bytes.NewReader(preamble[:rlen]) preambleR := bytes.NewReader(preamble[:rlen])

View File

@ -7,7 +7,7 @@ import (
"github.com/docker/distribution/reference" "github.com/docker/distribution/reference"
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/swarm" "github.com/docker/docker/api/types/swarm"
"github.com/opencontainers/go-digest" digest "github.com/opencontainers/go-digest"
"github.com/pkg/errors" "github.com/pkg/errors"
"golang.org/x/net/context" "golang.org/x/net/context"
) )
@ -85,7 +85,7 @@ func (cli *Client) ServiceCreate(ctx context.Context, service swarm.ServiceSpec,
return response, err return response, err
} }
func imageDigestAndPlatforms(ctx context.Context, cli *Client, image, encodedAuth string) (string, []swarm.Platform, error) { func imageDigestAndPlatforms(ctx context.Context, cli DistributionAPIClient, image, encodedAuth string) (string, []swarm.Platform, error) {
distributionInspect, err := cli.DistributionInspect(ctx, image, encodedAuth) distributionInspect, err := cli.DistributionInspect(ctx, image, encodedAuth)
imageWithDigest := image imageWithDigest := image
var platforms []swarm.Platform var platforms []swarm.Platform

View File

@ -539,7 +539,7 @@ func initRouter(opts routerOptions) {
} }
// TODO: remove this from cli and return the authzMiddleware // TODO: remove this from cli and return the authzMiddleware
func (cli *DaemonCli) initMiddlewares(s *apiserver.Server, cfg *apiserver.Config, pluginStore *plugin.Store) error { func (cli *DaemonCli) initMiddlewares(s *apiserver.Server, cfg *apiserver.Config, pluginStore plugingetter.PluginGetter) error {
v := cfg.Version v := cfg.Version
exp := middleware.NewExperimentalMiddleware(cli.Config.Experimental) exp := middleware.NewExperimentalMiddleware(cli.Config.Experimental)

View File

@ -655,8 +655,12 @@ func (container *Container) BuildEndpointInfo(n libnetwork.Network, ep libnetwor
return nil return nil
} }
type named interface {
Name() string
}
// UpdateJoinInfo updates network settings when container joins network n with endpoint ep. // UpdateJoinInfo updates network settings when container joins network n with endpoint ep.
func (container *Container) UpdateJoinInfo(n libnetwork.Network, ep libnetwork.Endpoint) error { func (container *Container) UpdateJoinInfo(n named, ep libnetwork.Endpoint) error {
if err := container.buildPortMapInfo(ep); err != nil { if err := container.buildPortMapInfo(ep); err != nil {
return err return err
} }
@ -684,7 +688,7 @@ func (container *Container) UpdateSandboxNetworkSettings(sb libnetwork.Sandbox)
} }
// BuildJoinOptions builds endpoint Join options from a given network. // BuildJoinOptions builds endpoint Join options from a given network.
func (container *Container) BuildJoinOptions(n libnetwork.Network) ([]libnetwork.EndpointOption, error) { func (container *Container) BuildJoinOptions(n named) ([]libnetwork.EndpointOption, error) {
var joinOptions []libnetwork.EndpointOption var joinOptions []libnetwork.EndpointOption
if epConfig, ok := container.NetworkSettings.Networks[n.Name()]; ok { if epConfig, ok := container.NetworkSettings.Networks[n.Name()]; ok {
for _, str := range epConfig.Links { for _, str := range epConfig.Links {

View File

@ -3,7 +3,6 @@ package convert
import ( import (
"fmt" "fmt"
"strings" "strings"
"time"
types "github.com/docker/docker/api/types/swarm" types "github.com/docker/docker/api/types/swarm"
swarmapi "github.com/docker/swarmkit/api" swarmapi "github.com/docker/swarmkit/api"
@ -115,7 +114,7 @@ func MergeSwarmSpecToGRPC(s types.Spec, spec swarmapi.ClusterSpec) (swarmapi.Clu
spec.Raft.ElectionTick = uint32(s.Raft.ElectionTick) spec.Raft.ElectionTick = uint32(s.Raft.ElectionTick)
} }
if s.Dispatcher.HeartbeatPeriod != 0 { if s.Dispatcher.HeartbeatPeriod != 0 {
spec.Dispatcher.HeartbeatPeriod = gogotypes.DurationProto(time.Duration(s.Dispatcher.HeartbeatPeriod)) spec.Dispatcher.HeartbeatPeriod = gogotypes.DurationProto(s.Dispatcher.HeartbeatPeriod)
} }
if s.CAConfig.NodeCertExpiry != 0 { if s.CAConfig.NodeCertExpiry != 0 {
spec.CAConfig.NodeCertExpiry = gogotypes.DurationProto(s.CAConfig.NodeCertExpiry) spec.CAConfig.NodeCertExpiry = gogotypes.DurationProto(s.CAConfig.NodeCertExpiry)

View File

@ -659,7 +659,7 @@ func (e *exitError) Error() string {
} }
func (e *exitError) ExitCode() int { func (e *exitError) ExitCode() int {
return int(e.code) return e.code
} }
func (e *exitError) Cause() error { func (e *exitError) Cause() error {

View File

@ -142,7 +142,7 @@ func (d *Daemon) ContainerExecCreate(name string, config *types.ExecConfig) (str
// ContainerExecStart starts a previously set up exec instance. The // ContainerExecStart starts a previously set up exec instance. The
// std streams are set up. // std streams are set up.
// If ctx is cancelled, the process is terminated. // If ctx is cancelled, the process is terminated.
func (d *Daemon) ContainerExecStart(ctx context.Context, name string, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) (err error) { func (d *Daemon) ContainerExecStart(ctx context.Context, name string, stdin io.Reader, stdout io.Writer, stderr io.Writer) (err error) {
var ( var (
cStdin io.ReadCloser cStdin io.ReadCloser
cStdout, cStderr io.Writer cStdout, cStderr io.Writer

View File

@ -158,8 +158,8 @@ func copyDir(srcDir, dstDir string, flags copyFlags) error {
// system.Chtimes doesn't support a NOFOLLOW flag atm // system.Chtimes doesn't support a NOFOLLOW flag atm
if !isSymlink { if !isSymlink {
aTime := time.Unix(int64(stat.Atim.Sec), int64(stat.Atim.Nsec)) aTime := time.Unix(stat.Atim.Sec, stat.Atim.Nsec)
mTime := time.Unix(int64(stat.Mtim.Sec), int64(stat.Mtim.Nsec)) mTime := time.Unix(stat.Mtim.Sec, stat.Mtim.Nsec)
if err := system.Chtimes(dstPath, aTime, mTime); err != nil { if err := system.Chtimes(dstPath, aTime, mTime); err != nil {
return err return err
} }

View File

@ -97,10 +97,10 @@ func (daemon *Daemon) SystemInfo() (*types.Info, error) {
drivers = strings.TrimSpace(drivers) drivers = strings.TrimSpace(drivers)
v := &types.Info{ v := &types.Info{
ID: daemon.ID, ID: daemon.ID,
Containers: int(cRunning + cPaused + cStopped), Containers: cRunning + cPaused + cStopped,
ContainersRunning: int(cRunning), ContainersRunning: cRunning,
ContainersPaused: int(cPaused), ContainersPaused: cPaused,
ContainersStopped: int(cStopped), ContainersStopped: cStopped,
Images: imageCount, Images: imageCount,
Driver: drivers, Driver: drivers,
DriverStatus: daemon.stores[p].layerStore.DriverStatus(), DriverStatus: daemon.stores[p].layerStore.DriverStatus(),

View File

@ -86,7 +86,7 @@ func listenFD(addr string, tlsConfig *tls.Config) ([]net.Listener, error) {
return nil, fmt.Errorf("failed to parse systemd fd address: should be a number: %v", addr) return nil, fmt.Errorf("failed to parse systemd fd address: should be a number: %v", addr)
} }
fdOffset := fdNum - 3 fdOffset := fdNum - 3
if len(listeners) < int(fdOffset)+1 { if len(listeners) < fdOffset+1 {
return nil, fmt.Errorf("too few socket activated files passed in by systemd") return nil, fmt.Errorf("too few socket activated files passed in by systemd")
} }
if listeners[fdOffset] == nil { if listeners[fdOffset] == nil {

View File

@ -833,7 +833,7 @@ func (daemon *Daemon) createSpec(c *container.Container) (*specs.Spec, error) {
s.Process.OOMScoreAdj = &c.HostConfig.OomScoreAdj s.Process.OOMScoreAdj = &c.HostConfig.OomScoreAdj
s.Linux.MountLabel = c.MountLabel s.Linux.MountLabel = c.MountLabel
return (*specs.Spec)(&s), nil return &s, nil
} }
func clearReadOnly(m *specs.Mount) { func clearReadOnly(m *specs.Mount) {

View File

@ -84,7 +84,7 @@ func ComputeV2MetadataHMACKey(authConfig *types.AuthConfig) ([]byte, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
return []byte(digest.FromBytes([]byte(buf))), nil return []byte(digest.FromBytes(buf)), nil
} }
// authConfigKeyInput is a reduced AuthConfig structure holding just relevant credential data eligible for // authConfigKeyInput is a reduced AuthConfig structure holding just relevant credential data eligible for

View File

@ -28,7 +28,7 @@ import (
"github.com/docker/docker/pkg/system" "github.com/docker/docker/pkg/system"
refstore "github.com/docker/docker/reference" refstore "github.com/docker/docker/reference"
"github.com/docker/docker/registry" "github.com/docker/docker/registry"
"github.com/opencontainers/go-digest" digest "github.com/opencontainers/go-digest"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"golang.org/x/net/context" "golang.org/x/net/context"
@ -435,7 +435,7 @@ func (p *v2Puller) pullV2Tag(ctx context.Context, ref reference.Named) (tagUpdat
return true, nil return true, nil
} }
func (p *v2Puller) pullSchema1(ctx context.Context, ref reference.Named, unverifiedManifest *schema1.SignedManifest) (id digest.Digest, manifestDigest digest.Digest, err error) { func (p *v2Puller) pullSchema1(ctx context.Context, ref reference.Reference, unverifiedManifest *schema1.SignedManifest) (id digest.Digest, manifestDigest digest.Digest, err error) {
var verifiedManifest *schema1.Manifest var verifiedManifest *schema1.Manifest
verifiedManifest, err = verifySchema1Manifest(unverifiedManifest, ref) verifiedManifest, err = verifySchema1Manifest(unverifiedManifest, ref)
if err != nil { if err != nil {
@ -838,7 +838,7 @@ func allowV1Fallback(err error) error {
return err return err
} }
func verifySchema1Manifest(signedManifest *schema1.SignedManifest, ref reference.Named) (m *schema1.Manifest, err error) { func verifySchema1Manifest(signedManifest *schema1.SignedManifest, ref reference.Reference) (m *schema1.Manifest, err error) {
// If pull by digest, then verify the manifest digest. NOTE: It is // If pull by digest, then verify the manifest digest. NOTE: It is
// important to do this first, before any other content validation. If the // important to do this first, before any other content validation. If the
// digest cannot be verified, don't even bother with those other things. // digest cannot be verified, don't even bother with those other things.

View File

@ -24,7 +24,7 @@ import (
"github.com/docker/docker/pkg/progress" "github.com/docker/docker/pkg/progress"
"github.com/docker/docker/pkg/stringid" "github.com/docker/docker/pkg/stringid"
"github.com/docker/docker/registry" "github.com/docker/docker/registry"
"github.com/opencontainers/go-digest" digest "github.com/opencontainers/go-digest"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
@ -651,6 +651,7 @@ func (bla byLikeness) Swap(i, j int) {
} }
func (bla byLikeness) Len() int { return len(bla.arr) } func (bla byLikeness) Len() int { return len(bla.arr) }
// nolint: interfacer
func sortV2MetadataByLikenessAndAge(repoInfo reference.Named, hmacKey []byte, marr []metadata.V2Metadata) { func sortV2MetadataByLikenessAndAge(repoInfo reference.Named, hmacKey []byte, marr []metadata.V2Metadata) {
// reverse the metadata array to shift the newest entries to the beginning // reverse the metadata array to shift the newest entries to the beginning
for i := 0; i < len(marr)/2; i++ { for i := 0; i < len(marr)/2; i++ {

View File

@ -14,6 +14,8 @@
"gofmt", "gofmt",
"goimports", "goimports",
"golint", "golint",
"interfacer",
"unconvert",
"vet" "vet"
], ],

View File

@ -23,7 +23,7 @@ import (
"github.com/docker/docker/pkg/stringid" "github.com/docker/docker/pkg/stringid"
"github.com/docker/docker/pkg/symlink" "github.com/docker/docker/pkg/symlink"
"github.com/docker/docker/pkg/system" "github.com/docker/docker/pkg/system"
"github.com/opencontainers/go-digest" digest "github.com/opencontainers/go-digest"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
@ -212,15 +212,12 @@ func (l *tarexporter) loadLayer(filename string, rootFS image.RootFS, id string,
return l.ls.Register(inflatedLayerData, rootFS.ChainID(), platform) return l.ls.Register(inflatedLayerData, rootFS.ChainID(), platform)
} }
func (l *tarexporter) setLoadedTag(ref reference.NamedTagged, imgID digest.Digest, outStream io.Writer) error { func (l *tarexporter) setLoadedTag(ref reference.Named, imgID digest.Digest, outStream io.Writer) error {
if prevID, err := l.rs.Get(ref); err == nil && prevID != imgID { if prevID, err := l.rs.Get(ref); err == nil && prevID != imgID {
fmt.Fprintf(outStream, "The image %s already exists, renaming the old one with ID %s to empty string\n", reference.FamiliarString(ref), string(prevID)) // todo: this message is wrong in case of multiple tags fmt.Fprintf(outStream, "The image %s already exists, renaming the old one with ID %s to empty string\n", reference.FamiliarString(ref), string(prevID)) // todo: this message is wrong in case of multiple tags
} }
if err := l.rs.AddTag(ref, imgID, true); err != nil { return l.rs.AddTag(ref, imgID, true)
return err
}
return nil
} }
func (l *tarexporter) legacyLoad(tmpDir string, outStream io.Writer, progressOutput progress.Output) error { func (l *tarexporter) legacyLoad(tmpDir string, outStream io.Writer, progressOutput progress.Output) error {

View File

@ -50,7 +50,7 @@ func (clnt *client) Create(containerID string, checkpoint string, checkpointDir
return fmt.Errorf("Container %s is already active", containerID) return fmt.Errorf("Container %s is already active", containerID)
} }
uid, gid, err := getRootIDs(specs.Spec(spec)) uid, gid, err := getRootIDs(spec)
if err != nil { if err != nil {
return err return err
} }

View File

@ -177,7 +177,7 @@ func (opts *MapOpts) GetAll() map[string]string {
} }
func (opts *MapOpts) String() string { func (opts *MapOpts) String() string {
return fmt.Sprintf("%v", map[string]string((opts.values))) return fmt.Sprintf("%v", opts.values)
} }
// Type returns a string name for this Option type // Type returns a string name for this Option type

View File

@ -18,7 +18,7 @@ func (s *QuotedString) Type() string {
} }
func (s *QuotedString) String() string { func (s *QuotedString) String() string {
return string(*s.value) return *s.value
} }
func trimQuotes(value string) string { func trimQuotes(value string) string {

View File

@ -50,8 +50,8 @@ func setHeaderForSpecialDevice(hdr *tar.Header, name string, stat interface{}) (
// Currently go does not fill in the major/minors // Currently go does not fill in the major/minors
if s.Mode&unix.S_IFBLK != 0 || if s.Mode&unix.S_IFBLK != 0 ||
s.Mode&unix.S_IFCHR != 0 { s.Mode&unix.S_IFCHR != 0 {
hdr.Devmajor = int64(major(uint64(s.Rdev))) hdr.Devmajor = int64(major(s.Rdev))
hdr.Devminor = int64(minor(uint64(s.Rdev))) hdr.Devminor = int64(minor(s.Rdev))
} }
} }
@ -62,7 +62,7 @@ func getInodeFromStat(stat interface{}) (inode uint64, err error) {
s, ok := stat.(*syscall.Stat_t) s, ok := stat.(*syscall.Stat_t)
if ok { if ok {
inode = uint64(s.Ino) inode = s.Ino
} }
return return

View File

@ -294,7 +294,7 @@ func OverlayChanges(layers []string, rw string) ([]Change, error) {
func overlayDeletedFile(root, path string, fi os.FileInfo) (string, error) { func overlayDeletedFile(root, path string, fi os.FileInfo) (string, error) {
if fi.Mode()&os.ModeCharDevice != 0 { if fi.Mode()&os.ModeCharDevice != 0 {
s := fi.Sys().(*syscall.Stat_t) s := fi.Sys().(*syscall.Stat_t)
if major(uint64(s.Rdev)) == 0 && minor(uint64(s.Rdev)) == 0 { if major(s.Rdev) == 0 && minor(s.Rdev) == 0 {
return path, nil return path, nil
} }
} }

View File

@ -29,7 +29,7 @@ func (info *FileInfo) isDir() bool {
} }
func getIno(fi os.FileInfo) uint64 { func getIno(fi os.FileInfo) uint64 {
return uint64(fi.Sys().(*syscall.Stat_t).Ino) return fi.Sys().(*syscall.Stat_t).Ino
} }
func hasHardlinks(fi os.FileInfo) bool { func hasHardlinks(fi os.FileInfo) bool {

View File

@ -74,7 +74,7 @@ type DefaultLogger struct {
// DMLog is the logging callback containing all of the information from // DMLog is the logging callback containing all of the information from
// devicemapper. The interface is identical to the C libdm counterpart. // devicemapper. The interface is identical to the C libdm counterpart.
func (l DefaultLogger) DMLog(level int, file string, line, dmError int, message string) { func (l DefaultLogger) DMLog(level int, file string, line, dmError int, message string) {
if int(level) <= l.Level { if level <= l.Level {
// Forward the log to the correct logrus level, if allowed by dmLogLevel. // Forward the log to the correct logrus level, if allowed by dmLogLevel.
logMsg := fmt.Sprintf("libdevmapper(%d): %s:%d (%d) %s", level, file, line, dmError, message) logMsg := fmt.Sprintf("libdevmapper(%d): %s:%d (%d) %s", level, file, line, dmError, message)
switch level { switch level {

View File

@ -34,11 +34,11 @@ func Size(dir string) (size int64, err error) {
// Check inode to handle hard links correctly // Check inode to handle hard links correctly
inode := fileInfo.Sys().(*syscall.Stat_t).Ino inode := fileInfo.Sys().(*syscall.Stat_t).Ino
// inode is not a uint64 on all platforms. Cast it to avoid issues. // inode is not a uint64 on all platforms. Cast it to avoid issues.
if _, exists := data[uint64(inode)]; exists { if _, exists := data[inode]; exists {
return nil return nil
} }
// inode is not a uint64 on all platforms. Cast it to avoid issues. // inode is not a uint64 on all platforms. Cast it to avoid issues.
data[uint64(inode)] = struct{}{} data[inode] = struct{}{}
size += s size += s

View File

@ -5,10 +5,10 @@ import "syscall"
// fromStatT converts a syscall.Stat_t type to a system.Stat_t type // fromStatT converts a syscall.Stat_t type to a system.Stat_t type
func fromStatT(s *syscall.Stat_t) (*StatT, error) { func fromStatT(s *syscall.Stat_t) (*StatT, error) {
return &StatT{size: s.Size, return &StatT{size: s.Size,
mode: uint32(s.Mode), mode: s.Mode,
uid: s.Uid, uid: s.Uid,
gid: s.Gid, gid: s.Gid,
rdev: uint64(s.Rdev), rdev: s.Rdev,
mtim: s.Mtim}, nil mtim: s.Mtim}, nil
} }

View File

@ -59,7 +59,7 @@ next:
return nil, fmt.Errorf("Unknown character: '%s'", key) return nil, fmt.Errorf("Unknown character: '%s'", key)
} }
} else { } else {
codes = append(codes, byte(key[0])) codes = append(codes, key[0])
} }
} }
return codes, nil return codes, nil

View File

@ -18,7 +18,6 @@ import (
"github.com/docker/docker/pkg/stringid" "github.com/docker/docker/pkg/stringid"
"github.com/docker/docker/plugin/v2" "github.com/docker/docker/plugin/v2"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
@ -62,7 +61,7 @@ func (pm *Manager) enable(p *v2.Plugin, c *controller, force bool) error {
return errors.WithStack(err) return errors.WithStack(err)
} }
if err := pm.containerdClient.Create(p.GetID(), "", "", specs.Spec(*spec), attachToLog(p.GetID())); err != nil { if err := pm.containerdClient.Create(p.GetID(), "", "", *spec, attachToLog(p.GetID())); err != nil {
if p.PropagatedMount != "" { if p.PropagatedMount != "" {
if err := mount.Unmount(p.PropagatedMount); err != nil { if err := mount.Unmount(p.PropagatedMount); err != nil {
logrus.Warnf("Could not unmount %s: %v", p.PropagatedMount, err) logrus.Warnf("Could not unmount %s: %v", p.PropagatedMount, err)

View File

@ -247,6 +247,7 @@ func (err PingResponseError) Error() string {
// challenge manager for the supported authentication types and // challenge manager for the supported authentication types and
// whether v2 was confirmed by the response. If a response is received but // whether v2 was confirmed by the response. If a response is received but
// cannot be interpreted a PingResponseError will be returned. // cannot be interpreted a PingResponseError will be returned.
// nolint: interfacer
func PingV2Registry(endpoint *url.URL, transport http.RoundTripper) (challenge.Manager, bool, error) { func PingV2Registry(endpoint *url.URL, transport http.RoundTripper) (challenge.Manager, bool, error) {
var ( var (
foundV2 = false foundV2 = false