Signed-off-by: Veres Lajos <vlajos@gmail.com>
This commit is contained in:
parent
1e2765dabb
commit
5146232723
|
@ -309,7 +309,7 @@ made through a pull request.
|
||||||
# - If the pull request has some small problems that need to be changed, make
|
# - If the pull request has some small problems that need to be changed, make
|
||||||
# a comment adressing the issues.
|
# a comment adressing the issues.
|
||||||
# - If the changes needed to a PR are small, you can add a "LGTM once the
|
# - If the changes needed to a PR are small, you can add a "LGTM once the
|
||||||
# following comments are adressed..." this will reduce needless back and
|
# following comments are addressed..." this will reduce needless back and
|
||||||
# forth.
|
# forth.
|
||||||
# - If the PR only needs a few changes before being merged, any MAINTAINER can
|
# - If the PR only needs a few changes before being merged, any MAINTAINER can
|
||||||
# make a replacement PR that incorporates the existing commits and fixes the
|
# make a replacement PR that incorporates the existing commits and fixes the
|
||||||
|
|
|
@ -134,7 +134,7 @@ We won't accept patches expanding the surface of `docker exec`, which we intend
|
||||||
|
|
||||||
## 2.2 Dockerfile syntax
|
## 2.2 Dockerfile syntax
|
||||||
|
|
||||||
The Dockerfile syntax as we know it is simple, and has proven succesful in supporting all our
|
The Dockerfile syntax as we know it is simple, and has proven successful in supporting all our
|
||||||
[official images](https://github.com/docker-library/official-images). Although this is *not* a
|
[official images](https://github.com/docker-library/official-images). Although this is *not* a
|
||||||
definitive move, we temporarily won't accept more patches to the Dockerfile syntax for several
|
definitive move, we temporarily won't accept more patches to the Dockerfile syntax for several
|
||||||
reasons:
|
reasons:
|
||||||
|
|
|
@ -131,7 +131,7 @@ func (s *Server) getContainersLogs(version version.Version, w http.ResponseWrite
|
||||||
|
|
||||||
outStream := ioutils.NewWriteFlusher(w)
|
outStream := ioutils.NewWriteFlusher(w)
|
||||||
// write an empty chunk of data (this is to ensure that the
|
// write an empty chunk of data (this is to ensure that the
|
||||||
// HTTP Response is sent immediatly, even if the container has
|
// HTTP Response is sent immediately, even if the container has
|
||||||
// not yet produced any data)
|
// not yet produced any data)
|
||||||
outStream.Write(nil)
|
outStream.Write(nil)
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ var (
|
||||||
func init() {
|
func init() {
|
||||||
// Dispatch Table. see line_parsers.go for the parse functions.
|
// Dispatch Table. see line_parsers.go for the parse functions.
|
||||||
// The command is parsed and mapped to the line parser. The line parser
|
// The command is parsed and mapped to the line parser. The line parser
|
||||||
// recieves the arguments but not the command, and returns an AST after
|
// receives the arguments but not the command, and returns an AST after
|
||||||
// reformulating the arguments according to the rules in the parser
|
// reformulating the arguments according to the rules in the parser
|
||||||
// functions. Errors are propagated up by Parse() and the resulting AST can
|
// functions. Errors are propagated up by Parse() and the resulting AST can
|
||||||
// be incorporated directly into the existing AST as a next.
|
// be incorporated directly into the existing AST as a next.
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
*
|
*
|
||||||
* This sample list was compiled as a combination of all the syscalls
|
* This sample list was compiled as a combination of all the syscalls
|
||||||
* available on i386 and amd64 on Ubuntu Precise, as such it may not contain
|
* available on i386 and amd64 on Ubuntu Precise, as such it may not contain
|
||||||
* everything and not everything may be relevent for your system. This
|
* everything and not everything may be relevant for your system. This
|
||||||
* shouldn't be a problem.
|
* shouldn't be a problem.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ func (container *Container) resolvePath(path string) (resolvedPath, absPath stri
|
||||||
}
|
}
|
||||||
|
|
||||||
// statPath is the unexported version of StatPath. Locks and mounts should
|
// statPath is the unexported version of StatPath. Locks and mounts should
|
||||||
// be aquired before calling this method and the given path should be fully
|
// be acquired before calling this method and the given path should be fully
|
||||||
// resolved to a path on the host corresponding to the given absolute path
|
// resolved to a path on the host corresponding to the given absolute path
|
||||||
// inside the container.
|
// inside the container.
|
||||||
func (container *Container) statPath(resolvedPath, absPath string) (stat *types.ContainerPathStat, err error) {
|
func (container *Container) statPath(resolvedPath, absPath string) (stat *types.ContainerPathStat, err error) {
|
||||||
|
|
|
@ -810,7 +810,7 @@ func (container *Container) Exec(execConfig *execConfig) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// We use a callback here instead of a goroutine and an chan for
|
// We use a callback here instead of a goroutine and an chan for
|
||||||
// syncronization purposes
|
// synchronization purposes
|
||||||
cErr := promise.Go(func() error { return container.monitorExec(execConfig, callback) })
|
cErr := promise.Go(func() error { return container.monitorExec(execConfig, callback) })
|
||||||
|
|
||||||
// Exec should not return until the process is actually running
|
// Exec should not return until the process is actually running
|
||||||
|
|
|
@ -840,7 +840,7 @@ func (container *Container) AllocateNetwork() error {
|
||||||
|
|
||||||
if service == "" {
|
if service == "" {
|
||||||
// dot character "." has a special meaning to support SERVICE[.NETWORK] format.
|
// dot character "." has a special meaning to support SERVICE[.NETWORK] format.
|
||||||
// For backward compatiblity, replacing "." with "-", instead of failing
|
// For backward compatibility, replacing "." with "-", instead of failing
|
||||||
service = strings.Replace(container.Name, ".", "-", -1)
|
service = strings.Replace(container.Name, ".", "-", -1)
|
||||||
// Service names dont like "/" in them. removing it instead of failing for backward compatibility
|
// Service names dont like "/" in them. removing it instead of failing for backward compatibility
|
||||||
service = strings.Replace(service, "/", "", -1)
|
service = strings.Replace(service, "/", "", -1)
|
||||||
|
|
|
@ -92,7 +92,7 @@ func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
|
||||||
|
|
||||||
if !stringutils.InSlice(drops, "all") {
|
if !stringutils.InSlice(drops, "all") {
|
||||||
for _, cap := range basics {
|
for _, cap := range basics {
|
||||||
// skip `all` aready handled above
|
// skip `all` already handled above
|
||||||
if strings.ToLower(cap) == "all" {
|
if strings.ToLower(cap) == "all" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ func TweakCapabilities(basics, adds, drops []string) ([]string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, cap := range adds {
|
for _, cap := range adds {
|
||||||
// skip `all` aready handled above
|
// skip `all` already handled above
|
||||||
if strings.ToLower(cap) == "all" {
|
if strings.ToLower(cap) == "all" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,8 +70,8 @@ type devInfo struct {
|
||||||
//
|
//
|
||||||
// WARNING: In order to avoid AB-BA deadlocks when releasing
|
// WARNING: In order to avoid AB-BA deadlocks when releasing
|
||||||
// the global lock while holding the per-device locks all
|
// the global lock while holding the per-device locks all
|
||||||
// device locks must be aquired *before* the device lock, and
|
// device locks must be acquired *before* the device lock, and
|
||||||
// multiple device locks should be aquired parent before child.
|
// multiple device locks should be acquired parent before child.
|
||||||
lock sync.Mutex
|
lock sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ func InitLoopbacks() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// create atleast 8 loopback files, ya, that is a good number
|
// create at least 8 loopback files, ya, that is a good number
|
||||||
for i := 0; i < 8; i++ {
|
for i := 0; i < 8; i++ {
|
||||||
loopPath := fmt.Sprintf("/dev/loop%d", i)
|
loopPath := fmt.Sprintf("/dev/loop%d", i)
|
||||||
// only create new loopback files if they don't exist
|
// only create new loopback files if they don't exist
|
||||||
|
|
|
@ -21,7 +21,7 @@ func (daemon *Daemon) ContainerStart(name string, hostConfig *runconfig.HostConf
|
||||||
return fmt.Errorf("Container already started")
|
return fmt.Errorf("Container already started")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Windows does not have the backwards compatibilty issue here.
|
// Windows does not have the backwards compatibility issue here.
|
||||||
if runtime.GOOS != "windows" {
|
if runtime.GOOS != "windows" {
|
||||||
// This is kept for backward compatibility - hostconfig should be passed when
|
// This is kept for backward compatibility - hostconfig should be passed when
|
||||||
// creating a container, not during start.
|
// creating a container, not during start.
|
||||||
|
|
|
@ -314,7 +314,7 @@ func shutdownDaemon(d *daemon.Daemon, timeout time.Duration) {
|
||||||
}()
|
}()
|
||||||
select {
|
select {
|
||||||
case <-ch:
|
case <-ch:
|
||||||
logrus.Debug("Clean shutdown succeded")
|
logrus.Debug("Clean shutdown succeeded")
|
||||||
case <-time.After(timeout * time.Second):
|
case <-time.After(timeout * time.Second):
|
||||||
logrus.Error("Force shutdown daemon")
|
logrus.Error("Force shutdown daemon")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1086,7 +1086,7 @@ Status Codes:
|
||||||
`HEAD /containers/(id)/archive`
|
`HEAD /containers/(id)/archive`
|
||||||
|
|
||||||
See the description of the `X-Docker-Container-Path-Stat` header in the
|
See the description of the `X-Docker-Container-Path-Stat` header in the
|
||||||
folowing section.
|
following section.
|
||||||
|
|
||||||
### Get an archive of a filesystem resource in a container
|
### Get an archive of a filesystem resource in a container
|
||||||
|
|
||||||
|
|
|
@ -1086,7 +1086,7 @@ Status Codes:
|
||||||
`HEAD /containers/(id)/archive`
|
`HEAD /containers/(id)/archive`
|
||||||
|
|
||||||
See the description of the `X-Docker-Container-Path-Stat` header in the
|
See the description of the `X-Docker-Container-Path-Stat` header in the
|
||||||
folowing section.
|
following section.
|
||||||
|
|
||||||
### Get an archive of a filesystem resource in a container
|
### Get an archive of a filesystem resource in a container
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Understand the policies
|
||||||
|
|
||||||
The `docker-default` profile the default for running
|
The `docker-default` profile the default for running
|
||||||
containers. It is moderately protective while
|
containers. It is moderately protective while
|
||||||
providing wide application compatability.
|
providing wide application compatibility.
|
||||||
|
|
||||||
The system's standard `unconfined` profile inherits all
|
The system's standard `unconfined` profile inherits all
|
||||||
system-wide policies, applying path-based policies
|
system-wide policies, applying path-based policies
|
||||||
|
|
|
@ -99,7 +99,7 @@ Assuming we want to publish a service from container `a0ebc12d3e48` on network `
|
||||||
|
|
||||||
This would make the container `a0ebc12d3e48` accessible as `my-service` on network `foo`. Any other container in network `foo` can use DNS to resolve the address of `my-service`
|
This would make the container `a0ebc12d3e48` accessible as `my-service` on network `foo`. Any other container in network `foo` can use DNS to resolve the address of `my-service`
|
||||||
|
|
||||||
This can also be acheived by using the `--publish-service` flag for `docker run`:
|
This can also be achieved by using the `--publish-service` flag for `docker run`:
|
||||||
|
|
||||||
docker run -itd --publish-service db.foo postgres
|
docker run -itd --publish-service db.foo postgres
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ set -e
|
||||||
: ${DOCKER_RELEASE_DIR:=$DEST}
|
: ${DOCKER_RELEASE_DIR:=$DEST}
|
||||||
YUMDIR=$DOCKER_RELEASE_DIR/yum/repo
|
YUMDIR=$DOCKER_RELEASE_DIR/yum/repo
|
||||||
|
|
||||||
# manage the repos for each distribution seperately
|
# manage the repos for each distribution separately
|
||||||
distros=( fedora centos oraclelinux )
|
distros=( fedora centos oraclelinux )
|
||||||
|
|
||||||
# get the release
|
# get the release
|
||||||
|
@ -39,7 +39,7 @@ for distro in "${distros[@]}"; do
|
||||||
version="$(basename "$dir")"
|
version="$(basename "$dir")"
|
||||||
suite="${version##*-}"
|
suite="${version##*-}"
|
||||||
|
|
||||||
# if the directory does not exist, intialize the yum repo
|
# if the directory does not exist, initialize the yum repo
|
||||||
if [[ ! -d $REPO/$suite/Packages ]]; then
|
if [[ ! -d $REPO/$suite/Packages ]]; then
|
||||||
mkdir -p "$REPO/$suite/Packages"
|
mkdir -p "$REPO/$suite/Packages"
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ bundle_test_unit() {
|
||||||
( IFS=$'\n'; echo "${BUILDFLAGS[*]}" ) > "$BUILDFLAGS_FILE"
|
( IFS=$'\n'; echo "${BUILDFLAGS[*]}" ) > "$BUILDFLAGS_FILE"
|
||||||
|
|
||||||
if command -v parallel &> /dev/null; then
|
if command -v parallel &> /dev/null; then
|
||||||
# accomodate parallel to be able to access variables
|
# accommodate parallel to be able to access variables
|
||||||
export SHELL="$BASH"
|
export SHELL="$BASH"
|
||||||
export HOME="$(mktemp -d)"
|
export HOME="$(mktemp -d)"
|
||||||
mkdir -p "$HOME/.parallel"
|
mkdir -p "$HOME/.parallel"
|
||||||
|
|
|
@ -1804,8 +1804,8 @@ func (s *DockerSuite) TestBuildForceRm(c *check.C) {
|
||||||
// * Run a 1-year-long sleep from a docker build.
|
// * Run a 1-year-long sleep from a docker build.
|
||||||
// * When docker events sees container start, close the "docker build" command
|
// * When docker events sees container start, close the "docker build" command
|
||||||
// * Wait for docker events to emit a dying event.
|
// * Wait for docker events to emit a dying event.
|
||||||
func (s *DockerSuite) TestBuildCancelationKillsSleep(c *check.C) {
|
func (s *DockerSuite) TestBuildCancellationKillsSleep(c *check.C) {
|
||||||
name := "testbuildcancelation"
|
name := "testbuildcancellation"
|
||||||
|
|
||||||
// (Note: one year, will never finish)
|
// (Note: one year, will never finish)
|
||||||
ctx, err := fakeContext("FROM busybox\nRUN sleep 31536000", nil)
|
ctx, err := fakeContext("FROM busybox\nRUN sleep 31536000", nil)
|
||||||
|
|
|
@ -306,7 +306,7 @@ func (s *DockerSuite) TestCpFromSymlinkToDirectory(c *check.C) {
|
||||||
os.Remove(expectedPath)
|
os.Remove(expectedPath)
|
||||||
|
|
||||||
// This copy command should resolve the symlink (note the trailing
|
// This copy command should resolve the symlink (note the trailing
|
||||||
// seperator), copying the target into the temporary directory.
|
// separator), copying the target into the temporary directory.
|
||||||
dockerCmd(c, "cp", cleanedContainerID+":"+"/dir_link/", testDir)
|
dockerCmd(c, "cp", cleanedContainerID+":"+"/dir_link/", testDir)
|
||||||
|
|
||||||
// It *should not* have copied the directory using the target's name, but
|
// It *should not* have copied the directory using the target's name, but
|
||||||
|
@ -397,7 +397,7 @@ func (s *DockerSuite) TestCpToSymlinkToDirectory(c *check.C) {
|
||||||
os.Remove(expectedPath)
|
os.Remove(expectedPath)
|
||||||
|
|
||||||
// This copy command should resolve the symlink (note the trailing
|
// This copy command should resolve the symlink (note the trailing
|
||||||
// seperator), copying the target into the test volume directory in the
|
// separator), copying the target into the test volume directory in the
|
||||||
// container.
|
// container.
|
||||||
dockerCmd(c, "cp", localLink+"/", cleanedContainerID+":/testVol")
|
dockerCmd(c, "cp", localLink+"/", cleanedContainerID+":/testVol")
|
||||||
|
|
||||||
|
|
|
@ -633,7 +633,7 @@ func (s *DockerDaemonSuite) TestDaemonBridgeIP(c *check.C) {
|
||||||
// 3. Check if the bip config has taken effect using ifconfig and iptables commands
|
// 3. Check if the bip config has taken effect using ifconfig and iptables commands
|
||||||
// 4. Launch a Container and make sure the IP-Address is in the expected subnet
|
// 4. Launch a Container and make sure the IP-Address is in the expected subnet
|
||||||
// 5. Delete the docker0 Bridge
|
// 5. Delete the docker0 Bridge
|
||||||
// 6. Restart the Docker Daemon (via defered action)
|
// 6. Restart the Docker Daemon (via deferred action)
|
||||||
// This Restart takes care of bringing docker0 interface back to auto-assigned IP
|
// This Restart takes care of bringing docker0 interface back to auto-assigned IP
|
||||||
|
|
||||||
defaultNetworkBridge := "docker0"
|
defaultNetworkBridge := "docker0"
|
||||||
|
|
|
@ -20,7 +20,7 @@ func (s *DockerSuite) TestEventsTimestampFormats(c *check.C) {
|
||||||
image := "busybox"
|
image := "busybox"
|
||||||
|
|
||||||
// Start stopwatch, generate an event
|
// Start stopwatch, generate an event
|
||||||
time.Sleep(time.Second) // so that we don't grab events from previous test occured in the same second
|
time.Sleep(time.Second) // so that we don't grab events from previous test occurred in the same second
|
||||||
start := daemonTime(c)
|
start := daemonTime(c)
|
||||||
time.Sleep(time.Second) // remote API precision is only a second, wait a while before creating an event
|
time.Sleep(time.Second) // remote API precision is only a second, wait a while before creating an event
|
||||||
dockerCmd(c, "tag", image, "timestamptest:1")
|
dockerCmd(c, "tag", image, "timestamptest:1")
|
||||||
|
|
|
@ -184,7 +184,7 @@ func (s *DockerSuite) TestLogsSince(c *check.C) {
|
||||||
out, _ := dockerCmd(c, "run", "--name="+name, "busybox", "/bin/sh", "-c", "for i in $(seq 1 3); do sleep 2; echo `date +%s` log$i; done")
|
out, _ := dockerCmd(c, "run", "--name="+name, "busybox", "/bin/sh", "-c", "for i in $(seq 1 3); do sleep 2; echo `date +%s` log$i; done")
|
||||||
|
|
||||||
log2Line := strings.Split(strings.Split(out, "\n")[1], " ")
|
log2Line := strings.Split(strings.Split(out, "\n")[1], " ")
|
||||||
t, err := strconv.ParseInt(log2Line[0], 10, 64) // the timestamp log2 is writen
|
t, err := strconv.ParseInt(log2Line[0], 10, 64) // the timestamp log2 is written
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
since := t + 1 // add 1s so log1 & log2 doesn't show up
|
since := t + 1 // add 1s so log1 & log2 doesn't show up
|
||||||
out, _ = dockerCmd(c, "logs", "-t", fmt.Sprintf("--since=%v", since), name)
|
out, _ = dockerCmd(c, "logs", "-t", fmt.Sprintf("--since=%v", since), name)
|
||||||
|
|
|
@ -1032,7 +1032,7 @@ func (s *DockerSuite) TestRunDnsOptionsBasedOnHostResolvConf(c *check.C) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test to see if a non-root user can resolve a DNS name and reach out to it. Also
|
// Test to see if a non-root user can resolve a DNS name and reach out to it. Also
|
||||||
// check if the container resolv.conf file has atleast 0644 perm.
|
// check if the container resolv.conf file has at least 0644 perm.
|
||||||
func (s *DockerSuite) TestRunNonRootUserResolvName(c *check.C) {
|
func (s *DockerSuite) TestRunNonRootUserResolvName(c *check.C) {
|
||||||
testRequires(c, SameHostDaemon, Network)
|
testRequires(c, SameHostDaemon, Network)
|
||||||
|
|
||||||
|
@ -1050,7 +1050,7 @@ func (s *DockerSuite) TestRunNonRootUserResolvName(c *check.C) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (finfo.Mode() & fmode) != fmode {
|
if (finfo.Mode() & fmode) != fmode {
|
||||||
c.Fatalf("Expected container resolv.conf mode to be atleast %s, instead got %s", fmode.String(), finfo.Mode().String())
|
c.Fatalf("Expected container resolv.conf mode to be at least %s, instead got %s", fmode.String(), finfo.Mode().String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ func (s *DockerSuite) TestTagWithPrefixHyphen(c *check.C) {
|
||||||
if err == nil || !strings.Contains(out, "repository name component must match") {
|
if err == nil || !strings.Contains(out, "repository name component must match") {
|
||||||
c.Fatal("tag a name begin with '-' should failed")
|
c.Fatal("tag a name begin with '-' should failed")
|
||||||
}
|
}
|
||||||
// test index name begin wiht '-'
|
// test index name begin with '-'
|
||||||
out, _, err = dockerCmdWithError("tag", "busybox:latest", "-index:5000/busybox:test")
|
out, _, err = dockerCmdWithError("tag", "busybox:latest", "-index:5000/busybox:test")
|
||||||
if err == nil || !strings.Contains(out, "Invalid index name (-index:5000). Cannot begin or end with a hyphen") {
|
if err == nil || !strings.Contains(out, "Invalid index name (-index:5000). Cannot begin or end with a hyphen") {
|
||||||
c.Fatal("tag a name begin with '-' should failed")
|
c.Fatal("tag a name begin with '-' should failed")
|
||||||
|
|
|
@ -32,7 +32,7 @@ import (
|
||||||
// Daemon represents a Docker daemon for the testing framework.
|
// Daemon represents a Docker daemon for the testing framework.
|
||||||
type Daemon struct {
|
type Daemon struct {
|
||||||
// Defaults to "daemon"
|
// Defaults to "daemon"
|
||||||
// Useful to set to --daemon or -d for checking backwards compatability
|
// Useful to set to --daemon or -d for checking backwards compatibility
|
||||||
Command string
|
Command string
|
||||||
GlobalFlags []string
|
GlobalFlags []string
|
||||||
|
|
||||||
|
|
|
@ -306,7 +306,7 @@ func PrepareArchiveCopy(srcContent Reader, srcInfo, dstInfo CopyInfo) (dstDir st
|
||||||
}
|
}
|
||||||
|
|
||||||
// rebaseArchiveEntries rewrites the given srcContent archive replacing
|
// rebaseArchiveEntries rewrites the given srcContent archive replacing
|
||||||
// an occurance of oldBase with newBase at the beginning of entry names.
|
// an occurrence of oldBase with newBase at the beginning of entry names.
|
||||||
func rebaseArchiveEntries(srcContent Reader, oldBase, newBase string) Archive {
|
func rebaseArchiveEntries(srcContent Reader, oldBase, newBase string) Archive {
|
||||||
if oldBase == string(os.PathSeparator) {
|
if oldBase == string(os.PathSeparator) {
|
||||||
// If oldBase specifies the root directory, use an empty string as
|
// If oldBase specifies the root directory, use an empty string as
|
||||||
|
|
|
@ -58,7 +58,7 @@ func UnpackLayer(dest string, layer Reader) (size int64, err error) {
|
||||||
// TODO Windows. Once the registry is aware of what images are Windows-
|
// TODO Windows. Once the registry is aware of what images are Windows-
|
||||||
// specific or Linux-specific, this warning should be changed to an error
|
// specific or Linux-specific, this warning should be changed to an error
|
||||||
// to cater for the situation where someone does manage to upload a Linux
|
// to cater for the situation where someone does manage to upload a Linux
|
||||||
// image but have it tagged as Windows inadvertantly.
|
// image but have it tagged as Windows inadvertently.
|
||||||
if runtime.GOOS == "windows" {
|
if runtime.GOOS == "windows" {
|
||||||
if strings.Contains(hdr.Name, ":") {
|
if strings.Contains(hdr.Name, ":") {
|
||||||
logrus.Warnf("Windows: Ignoring %s (is this a Linux image?)", hdr.Name)
|
logrus.Warnf("Windows: Ignoring %s (is this a Linux image?)", hdr.Name)
|
||||||
|
|
|
@ -307,7 +307,7 @@ func (db *Database) Parents(name string) ([]string, error) {
|
||||||
return db.parents(e)
|
return db.parents(e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Refs returns the refrence count for a specified id.
|
// Refs returns the reference count for a specified id.
|
||||||
func (db *Database) Refs(id string) int {
|
func (db *Database) Refs(id string) int {
|
||||||
db.mux.RLock()
|
db.mux.RLock()
|
||||||
defer db.mux.RUnlock()
|
defer db.mux.RUnlock()
|
||||||
|
|
|
@ -243,7 +243,7 @@ func TestAddSelfAsChild(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAddChildToNonExistantRoot(t *testing.T) {
|
func TestAddChildToNonExistentRoot(t *testing.T) {
|
||||||
db, dbpath := newTestDb(t)
|
db, dbpath := newTestDb(t)
|
||||||
defer destroyTestDb(dbpath)
|
defer destroyTestDb(dbpath)
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,7 @@ func HashData(src io.Reader) (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnEOFReader wraps a io.ReadCloser and a function
|
// OnEOFReader wraps a io.ReadCloser and a function
|
||||||
// the fuction will run at the end of file or close the file.
|
// the function will run at the end of file or close the file.
|
||||||
type OnEOFReader struct {
|
type OnEOFReader struct {
|
||||||
Rc io.ReadCloser
|
Rc io.ReadCloser
|
||||||
Fn func()
|
Fn func()
|
||||||
|
|
|
@ -1094,7 +1094,7 @@ func (fs *FlagSet) ParseFlags(args []string, withHelp bool) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReportError is a utility method that prints a user-friendly message
|
// ReportError is a utility method that prints a user-friendly message
|
||||||
// containing the error that occured during parsing and a suggestion to get help
|
// containing the error that occurred during parsing and a suggestion to get help
|
||||||
func (fs *FlagSet) ReportError(str string, withHelp bool) {
|
func (fs *FlagSet) ReportError(str string, withHelp bool) {
|
||||||
if withHelp {
|
if withHelp {
|
||||||
if os.Args[0] == fs.Name() {
|
if os.Args[0] == fs.Name() {
|
||||||
|
|
|
@ -107,7 +107,7 @@ var (
|
||||||
// Homi J Bhabha - was an Indian nuclear physicist, founding director, and professor of physics at the Tata Institute of Fundamental Research. Colloquially known as "father of Indian nuclear programme"- https://en.wikipedia.org/wiki/Homi_J._Bhabha
|
// Homi J Bhabha - was an Indian nuclear physicist, founding director, and professor of physics at the Tata Institute of Fundamental Research. Colloquially known as "father of Indian nuclear programme"- https://en.wikipedia.org/wiki/Homi_J._Bhabha
|
||||||
"bhabha",
|
"bhabha",
|
||||||
|
|
||||||
// Bhaskara II - Ancient Indian mathematician-astronomer whose work on calculus predates Newton and Leibniz by over half a millenium - https://en.wikipedia.org/wiki/Bh%C4%81skara_II#Calculus
|
// Bhaskara II - Ancient Indian mathematician-astronomer whose work on calculus predates Newton and Leibniz by over half a millennium - https://en.wikipedia.org/wiki/Bh%C4%81skara_II#Calculus
|
||||||
"bhaskara",
|
"bhaskara",
|
||||||
|
|
||||||
// Elizabeth Blackwell - American doctor and first American woman to receive a medical degree - https://en.wikipedia.org/wiki/Elizabeth_Blackwell
|
// Elizabeth Blackwell - American doctor and first American woman to receive a medical degree - https://en.wikipedia.org/wiki/Elizabeth_Blackwell
|
||||||
|
|
|
@ -45,7 +45,7 @@ func TestWrite(t *testing.T) {
|
||||||
t.Fatalf("Error while writing with StdWrite")
|
t.Fatalf("Error while writing with StdWrite")
|
||||||
}
|
}
|
||||||
if n != len(data) {
|
if n != len(data) {
|
||||||
t.Fatalf("Write should have writen %d byte but wrote %d.", len(data), n)
|
t.Fatalf("Write should have written %d byte but wrote %d.", len(data), n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Package tailfile provides helper functinos to read the nth lines of any
|
// Package tailfile provides helper functions to read the nth lines of any
|
||||||
// ReadSeeker.
|
// ReadSeeker.
|
||||||
package tailfile
|
package tailfile
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ func (ar *ansiReader) Read(p []byte) (int, error) {
|
||||||
ar.buffer = keyBytes[len(p):]
|
ar.buffer = keyBytes[len(p):]
|
||||||
keyBytes = keyBytes[:len(p)]
|
keyBytes = keyBytes[:len(p)]
|
||||||
} else if len(keyBytes) == 0 {
|
} else if len(keyBytes) == 0 {
|
||||||
logger.Debug("No key bytes returned from the translater")
|
logger.Debug("No key bytes returned from the translator")
|
||||||
return 0, nil
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Labels are carefully picked to optimize for:
|
||||||
|
|
||||||
- Readability: maintainers must immediately know the state of a PR
|
- Readability: maintainers must immediately know the state of a PR
|
||||||
- Filtering simplicity: different labels represent many different aspects of
|
- Filtering simplicity: different labels represent many different aspects of
|
||||||
the reviewing work, and can even be targetted at different maintainers groups.
|
the reviewing work, and can even be targeted at different maintainers groups.
|
||||||
|
|
||||||
A pull request should only be attributed labels documented in this section: other labels that may
|
A pull request should only be attributed labels documented in this section: other labels that may
|
||||||
exist on the repository should apply to issues.
|
exist on the repository should apply to issues.
|
||||||
|
|
|
@ -28,7 +28,7 @@ func NewService(options *Options) *Service {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auth contacts the public registry with the provided credentials,
|
// Auth contacts the public registry with the provided credentials,
|
||||||
// and returns OK if authentication was sucessful.
|
// and returns OK if authentication was successful.
|
||||||
// It can be used to verify the validity of a client's credentials.
|
// It can be used to verify the validity of a client's credentials.
|
||||||
func (s *Service) Auth(authConfig *cliconfig.AuthConfig) (string, error) {
|
func (s *Service) Auth(authConfig *cliconfig.AuthConfig) (string, error) {
|
||||||
addr := authConfig.ServerAddress
|
addr := authConfig.ServerAddress
|
||||||
|
|
Loading…
Reference in New Issue