mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Update godeps
This commit is contained in:
		
							
								
								
									
										22
									
								
								vendor/github.com/docker/docker/pkg/parsers/BUILD
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/docker/docker/pkg/parsers/BUILD
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
 | 
			
		||||
 | 
			
		||||
go_library(
 | 
			
		||||
    name = "go_default_library",
 | 
			
		||||
    srcs = ["parsers.go"],
 | 
			
		||||
    importpath = "github.com/docker/docker/pkg/parsers",
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "package-srcs",
 | 
			
		||||
    srcs = glob(["**"]),
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:private"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "all-srcs",
 | 
			
		||||
    srcs = [":package-srcs"],
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										69
									
								
								vendor/github.com/docker/docker/pkg/parsers/parsers.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								vendor/github.com/docker/docker/pkg/parsers/parsers.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
// Package parsers provides helper functions to parse and validate different type
 | 
			
		||||
// of string. It can be hosts, unix addresses, tcp addresses, filters, kernel
 | 
			
		||||
// operating system versions.
 | 
			
		||||
package parsers
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ParseKeyValueOpt parses and validates the specified string as a key/value pair (key=value)
 | 
			
		||||
func ParseKeyValueOpt(opt string) (string, string, error) {
 | 
			
		||||
	parts := strings.SplitN(opt, "=", 2)
 | 
			
		||||
	if len(parts) != 2 {
 | 
			
		||||
		return "", "", fmt.Errorf("Unable to parse key/value option: %s", opt)
 | 
			
		||||
	}
 | 
			
		||||
	return strings.TrimSpace(parts[0]), strings.TrimSpace(parts[1]), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ParseUintList parses and validates the specified string as the value
 | 
			
		||||
// found in some cgroup file (e.g. `cpuset.cpus`, `cpuset.mems`), which could be
 | 
			
		||||
// one of the formats below. Note that duplicates are actually allowed in the
 | 
			
		||||
// input string. It returns a `map[int]bool` with available elements from `val`
 | 
			
		||||
// set to `true`.
 | 
			
		||||
// Supported formats:
 | 
			
		||||
//     7
 | 
			
		||||
//     1-6
 | 
			
		||||
//     0,3-4,7,8-10
 | 
			
		||||
//     0-0,0,1-7
 | 
			
		||||
//     03,1-3      <- this is gonna get parsed as [1,2,3]
 | 
			
		||||
//     3,2,1
 | 
			
		||||
//     0-2,3,1
 | 
			
		||||
func ParseUintList(val string) (map[int]bool, error) {
 | 
			
		||||
	if val == "" {
 | 
			
		||||
		return map[int]bool{}, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	availableInts := make(map[int]bool)
 | 
			
		||||
	split := strings.Split(val, ",")
 | 
			
		||||
	errInvalidFormat := fmt.Errorf("invalid format: %s", val)
 | 
			
		||||
 | 
			
		||||
	for _, r := range split {
 | 
			
		||||
		if !strings.Contains(r, "-") {
 | 
			
		||||
			v, err := strconv.Atoi(r)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, errInvalidFormat
 | 
			
		||||
			}
 | 
			
		||||
			availableInts[v] = true
 | 
			
		||||
		} else {
 | 
			
		||||
			split := strings.SplitN(r, "-", 2)
 | 
			
		||||
			min, err := strconv.Atoi(split[0])
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, errInvalidFormat
 | 
			
		||||
			}
 | 
			
		||||
			max, err := strconv.Atoi(split[1])
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, errInvalidFormat
 | 
			
		||||
			}
 | 
			
		||||
			if max < min {
 | 
			
		||||
				return nil, errInvalidFormat
 | 
			
		||||
			}
 | 
			
		||||
			for i := min; i <= max; i++ {
 | 
			
		||||
				availableInts[i] = true
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return availableInts, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										90
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/BUILD
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/BUILD
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
 | 
			
		||||
 | 
			
		||||
go_library(
 | 
			
		||||
    name = "go_default_library",
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "sysinfo.go",
 | 
			
		||||
    ] + select({
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:android": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_unix.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:darwin": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_unix.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:dragonfly": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_unix.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:freebsd": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_unix.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:linux": [
 | 
			
		||||
            "numcpu_linux.go",
 | 
			
		||||
            "sysinfo_linux.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:nacl": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_unix.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:netbsd": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_unix.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:openbsd": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_unix.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:plan9": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_unix.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:solaris": [
 | 
			
		||||
            "numcpu.go",
 | 
			
		||||
            "sysinfo_solaris.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:windows": [
 | 
			
		||||
            "numcpu_windows.go",
 | 
			
		||||
            "sysinfo_windows.go",
 | 
			
		||||
        ],
 | 
			
		||||
        "//conditions:default": [],
 | 
			
		||||
    }),
 | 
			
		||||
    cgo = True,
 | 
			
		||||
    clinkopts = select({
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:solaris": [
 | 
			
		||||
            "-llgrp",
 | 
			
		||||
        ],
 | 
			
		||||
        "//conditions:default": [],
 | 
			
		||||
    }),
 | 
			
		||||
    importpath = "github.com/docker/docker/pkg/sysinfo",
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//vendor/github.com/docker/docker/pkg/parsers:go_default_library",
 | 
			
		||||
    ] + select({
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:linux": [
 | 
			
		||||
            "//vendor/github.com/opencontainers/runc/libcontainer/cgroups:go_default_library",
 | 
			
		||||
            "//vendor/github.com/sirupsen/logrus:go_default_library",
 | 
			
		||||
            "//vendor/golang.org/x/sys/unix:go_default_library",
 | 
			
		||||
        ],
 | 
			
		||||
        "@io_bazel_rules_go//go/platform:windows": [
 | 
			
		||||
            "//vendor/golang.org/x/sys/windows:go_default_library",
 | 
			
		||||
        ],
 | 
			
		||||
        "//conditions:default": [],
 | 
			
		||||
    }),
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "package-srcs",
 | 
			
		||||
    srcs = glob(["**"]),
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:private"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "all-srcs",
 | 
			
		||||
    srcs = [":package-srcs"],
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
SysInfo stores information about which features a kernel supports.
 | 
			
		||||
							
								
								
									
										12
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/numcpu.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/numcpu.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
// +build !linux,!windows
 | 
			
		||||
 | 
			
		||||
package sysinfo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"runtime"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// NumCPU returns the number of CPUs
 | 
			
		||||
func NumCPU() int {
 | 
			
		||||
	return runtime.NumCPU()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										44
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/numcpu_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/numcpu_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
// +build linux
 | 
			
		||||
 | 
			
		||||
package sysinfo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// numCPU queries the system for the count of threads available
 | 
			
		||||
// for use to this process.
 | 
			
		||||
//
 | 
			
		||||
// Issues two syscalls.
 | 
			
		||||
// Returns 0 on errors. Use |runtime.NumCPU| in that case.
 | 
			
		||||
func numCPU() int {
 | 
			
		||||
	// Gets the affinity mask for a process: The very one invoking this function.
 | 
			
		||||
	pid, _, _ := unix.RawSyscall(unix.SYS_GETPID, 0, 0, 0)
 | 
			
		||||
 | 
			
		||||
	var mask [1024 / 64]uintptr
 | 
			
		||||
	_, _, err := unix.RawSyscall(unix.SYS_SCHED_GETAFFINITY, pid, uintptr(len(mask)*8), uintptr(unsafe.Pointer(&mask[0])))
 | 
			
		||||
	if err != 0 {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// For every available thread a bit is set in the mask.
 | 
			
		||||
	ncpu := 0
 | 
			
		||||
	for _, e := range mask {
 | 
			
		||||
		if e == 0 {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		ncpu += int(popcnt(uint64(e)))
 | 
			
		||||
	}
 | 
			
		||||
	return ncpu
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NumCPU returns the number of CPUs which are currently online
 | 
			
		||||
func NumCPU() int {
 | 
			
		||||
	if ncpu := numCPU(); ncpu > 0 {
 | 
			
		||||
		return ncpu
 | 
			
		||||
	}
 | 
			
		||||
	return runtime.NumCPU()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/numcpu_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/numcpu_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
package sysinfo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/sys/windows"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	kernel32               = windows.NewLazySystemDLL("kernel32.dll")
 | 
			
		||||
	getCurrentProcess      = kernel32.NewProc("GetCurrentProcess")
 | 
			
		||||
	getProcessAffinityMask = kernel32.NewProc("GetProcessAffinityMask")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func numCPU() int {
 | 
			
		||||
	// Gets the affinity mask for a process
 | 
			
		||||
	var mask, sysmask uintptr
 | 
			
		||||
	currentProcess, _, _ := getCurrentProcess.Call()
 | 
			
		||||
	ret, _, _ := getProcessAffinityMask.Call(currentProcess, uintptr(unsafe.Pointer(&mask)), uintptr(unsafe.Pointer(&sysmask)))
 | 
			
		||||
	if ret == 0 {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
	// For every available thread a bit is set in the mask.
 | 
			
		||||
	ncpu := int(popcnt(uint64(mask)))
 | 
			
		||||
	return ncpu
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NumCPU returns the number of CPUs which are currently online
 | 
			
		||||
func NumCPU() int {
 | 
			
		||||
	if ncpu := numCPU(); ncpu > 0 {
 | 
			
		||||
		return ncpu
 | 
			
		||||
	}
 | 
			
		||||
	return runtime.NumCPU()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										144
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,144 @@
 | 
			
		||||
package sysinfo
 | 
			
		||||
 | 
			
		||||
import "github.com/docker/docker/pkg/parsers"
 | 
			
		||||
 | 
			
		||||
// SysInfo stores information about which features a kernel supports.
 | 
			
		||||
// TODO Windows: Factor out platform specific capabilities.
 | 
			
		||||
type SysInfo struct {
 | 
			
		||||
	// Whether the kernel supports AppArmor or not
 | 
			
		||||
	AppArmor bool
 | 
			
		||||
	// Whether the kernel supports Seccomp or not
 | 
			
		||||
	Seccomp bool
 | 
			
		||||
 | 
			
		||||
	cgroupMemInfo
 | 
			
		||||
	cgroupCPUInfo
 | 
			
		||||
	cgroupBlkioInfo
 | 
			
		||||
	cgroupCpusetInfo
 | 
			
		||||
	cgroupPids
 | 
			
		||||
 | 
			
		||||
	// Whether IPv4 forwarding is supported or not, if this was disabled, networking will not work
 | 
			
		||||
	IPv4ForwardingDisabled bool
 | 
			
		||||
 | 
			
		||||
	// Whether bridge-nf-call-iptables is supported or not
 | 
			
		||||
	BridgeNFCallIPTablesDisabled bool
 | 
			
		||||
 | 
			
		||||
	// Whether bridge-nf-call-ip6tables is supported or not
 | 
			
		||||
	BridgeNFCallIP6TablesDisabled bool
 | 
			
		||||
 | 
			
		||||
	// Whether the cgroup has the mountpoint of "devices" or not
 | 
			
		||||
	CgroupDevicesEnabled bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type cgroupMemInfo struct {
 | 
			
		||||
	// Whether memory limit is supported or not
 | 
			
		||||
	MemoryLimit bool
 | 
			
		||||
 | 
			
		||||
	// Whether swap limit is supported or not
 | 
			
		||||
	SwapLimit bool
 | 
			
		||||
 | 
			
		||||
	// Whether soft limit is supported or not
 | 
			
		||||
	MemoryReservation bool
 | 
			
		||||
 | 
			
		||||
	// Whether OOM killer disable is supported or not
 | 
			
		||||
	OomKillDisable bool
 | 
			
		||||
 | 
			
		||||
	// Whether memory swappiness is supported or not
 | 
			
		||||
	MemorySwappiness bool
 | 
			
		||||
 | 
			
		||||
	// Whether kernel memory limit is supported or not
 | 
			
		||||
	KernelMemory bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type cgroupCPUInfo struct {
 | 
			
		||||
	// Whether CPU shares is supported or not
 | 
			
		||||
	CPUShares bool
 | 
			
		||||
 | 
			
		||||
	// Whether CPU CFS(Completely Fair Scheduler) period is supported or not
 | 
			
		||||
	CPUCfsPeriod bool
 | 
			
		||||
 | 
			
		||||
	// Whether CPU CFS(Completely Fair Scheduler) quota is supported or not
 | 
			
		||||
	CPUCfsQuota bool
 | 
			
		||||
 | 
			
		||||
	// Whether CPU real-time period is supported or not
 | 
			
		||||
	CPURealtimePeriod bool
 | 
			
		||||
 | 
			
		||||
	// Whether CPU real-time runtime is supported or not
 | 
			
		||||
	CPURealtimeRuntime bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type cgroupBlkioInfo struct {
 | 
			
		||||
	// Whether Block IO weight is supported or not
 | 
			
		||||
	BlkioWeight bool
 | 
			
		||||
 | 
			
		||||
	// Whether Block IO weight_device is supported or not
 | 
			
		||||
	BlkioWeightDevice bool
 | 
			
		||||
 | 
			
		||||
	// Whether Block IO read limit in bytes per second is supported or not
 | 
			
		||||
	BlkioReadBpsDevice bool
 | 
			
		||||
 | 
			
		||||
	// Whether Block IO write limit in bytes per second is supported or not
 | 
			
		||||
	BlkioWriteBpsDevice bool
 | 
			
		||||
 | 
			
		||||
	// Whether Block IO read limit in IO per second is supported or not
 | 
			
		||||
	BlkioReadIOpsDevice bool
 | 
			
		||||
 | 
			
		||||
	// Whether Block IO write limit in IO per second is supported or not
 | 
			
		||||
	BlkioWriteIOpsDevice bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type cgroupCpusetInfo struct {
 | 
			
		||||
	// Whether Cpuset is supported or not
 | 
			
		||||
	Cpuset bool
 | 
			
		||||
 | 
			
		||||
	// Available Cpuset's cpus
 | 
			
		||||
	Cpus string
 | 
			
		||||
 | 
			
		||||
	// Available Cpuset's memory nodes
 | 
			
		||||
	Mems string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type cgroupPids struct {
 | 
			
		||||
	// Whether Pids Limit is supported or not
 | 
			
		||||
	PidsLimit bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsCpusetCpusAvailable returns `true` if the provided string set is contained
 | 
			
		||||
// in cgroup's cpuset.cpus set, `false` otherwise.
 | 
			
		||||
// If error is not nil a parsing error occurred.
 | 
			
		||||
func (c cgroupCpusetInfo) IsCpusetCpusAvailable(provided string) (bool, error) {
 | 
			
		||||
	return isCpusetListAvailable(provided, c.Cpus)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsCpusetMemsAvailable returns `true` if the provided string set is contained
 | 
			
		||||
// in cgroup's cpuset.mems set, `false` otherwise.
 | 
			
		||||
// If error is not nil a parsing error occurred.
 | 
			
		||||
func (c cgroupCpusetInfo) IsCpusetMemsAvailable(provided string) (bool, error) {
 | 
			
		||||
	return isCpusetListAvailable(provided, c.Mems)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func isCpusetListAvailable(provided, available string) (bool, error) {
 | 
			
		||||
	parsedProvided, err := parsers.ParseUintList(provided)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return false, err
 | 
			
		||||
	}
 | 
			
		||||
	parsedAvailable, err := parsers.ParseUintList(available)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return false, err
 | 
			
		||||
	}
 | 
			
		||||
	for k := range parsedProvided {
 | 
			
		||||
		if !parsedAvailable[k] {
 | 
			
		||||
			return false, nil
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return true, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Returns bit count of 1, used by NumCPU
 | 
			
		||||
func popcnt(x uint64) (n byte) {
 | 
			
		||||
	x -= (x >> 1) & 0x5555555555555555
 | 
			
		||||
	x = (x>>2)&0x3333333333333333 + x&0x3333333333333333
 | 
			
		||||
	x += x >> 4
 | 
			
		||||
	x &= 0x0f0f0f0f0f0f0f0f
 | 
			
		||||
	x *= 0x0101010101010101
 | 
			
		||||
	return byte(x >> 56)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										254
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										254
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,254 @@
 | 
			
		||||
package sysinfo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"path"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/opencontainers/runc/libcontainer/cgroups"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"golang.org/x/sys/unix"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func findCgroupMountpoints() (map[string]string, error) {
 | 
			
		||||
	cgMounts, err := cgroups.GetCgroupMounts(false)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("Failed to parse cgroup information: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	mps := make(map[string]string)
 | 
			
		||||
	for _, m := range cgMounts {
 | 
			
		||||
		for _, ss := range m.Subsystems {
 | 
			
		||||
			mps[ss] = m.Mountpoint
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return mps, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// New returns a new SysInfo, using the filesystem to detect which features
 | 
			
		||||
// the kernel supports. If `quiet` is `false` warnings are printed in logs
 | 
			
		||||
// whenever an error occurs or misconfigurations are present.
 | 
			
		||||
func New(quiet bool) *SysInfo {
 | 
			
		||||
	sysInfo := &SysInfo{}
 | 
			
		||||
	cgMounts, err := findCgroupMountpoints()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		logrus.Warnf("Failed to parse cgroup information: %v", err)
 | 
			
		||||
	} else {
 | 
			
		||||
		sysInfo.cgroupMemInfo = checkCgroupMem(cgMounts, quiet)
 | 
			
		||||
		sysInfo.cgroupCPUInfo = checkCgroupCPU(cgMounts, quiet)
 | 
			
		||||
		sysInfo.cgroupBlkioInfo = checkCgroupBlkioInfo(cgMounts, quiet)
 | 
			
		||||
		sysInfo.cgroupCpusetInfo = checkCgroupCpusetInfo(cgMounts, quiet)
 | 
			
		||||
		sysInfo.cgroupPids = checkCgroupPids(quiet)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, ok := cgMounts["devices"]
 | 
			
		||||
	sysInfo.CgroupDevicesEnabled = ok
 | 
			
		||||
 | 
			
		||||
	sysInfo.IPv4ForwardingDisabled = !readProcBool("/proc/sys/net/ipv4/ip_forward")
 | 
			
		||||
	sysInfo.BridgeNFCallIPTablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-iptables")
 | 
			
		||||
	sysInfo.BridgeNFCallIP6TablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-ip6tables")
 | 
			
		||||
 | 
			
		||||
	// Check if AppArmor is supported.
 | 
			
		||||
	if _, err := os.Stat("/sys/kernel/security/apparmor"); !os.IsNotExist(err) {
 | 
			
		||||
		sysInfo.AppArmor = true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Check if Seccomp is supported, via CONFIG_SECCOMP.
 | 
			
		||||
	if err := unix.Prctl(unix.PR_GET_SECCOMP, 0, 0, 0, 0); err != unix.EINVAL {
 | 
			
		||||
		// Make sure the kernel has CONFIG_SECCOMP_FILTER.
 | 
			
		||||
		if err := unix.Prctl(unix.PR_SET_SECCOMP, unix.SECCOMP_MODE_FILTER, 0, 0, 0); err != unix.EINVAL {
 | 
			
		||||
			sysInfo.Seccomp = true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return sysInfo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// checkCgroupMem reads the memory information from the memory cgroup mount point.
 | 
			
		||||
func checkCgroupMem(cgMounts map[string]string, quiet bool) cgroupMemInfo {
 | 
			
		||||
	mountPoint, ok := cgMounts["memory"]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		if !quiet {
 | 
			
		||||
			logrus.Warn("Your kernel does not support cgroup memory limit")
 | 
			
		||||
		}
 | 
			
		||||
		return cgroupMemInfo{}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	swapLimit := cgroupEnabled(mountPoint, "memory.memsw.limit_in_bytes")
 | 
			
		||||
	if !quiet && !swapLimit {
 | 
			
		||||
		logrus.Warn("Your kernel does not support swap memory limit")
 | 
			
		||||
	}
 | 
			
		||||
	memoryReservation := cgroupEnabled(mountPoint, "memory.soft_limit_in_bytes")
 | 
			
		||||
	if !quiet && !memoryReservation {
 | 
			
		||||
		logrus.Warn("Your kernel does not support memory reservation")
 | 
			
		||||
	}
 | 
			
		||||
	oomKillDisable := cgroupEnabled(mountPoint, "memory.oom_control")
 | 
			
		||||
	if !quiet && !oomKillDisable {
 | 
			
		||||
		logrus.Warn("Your kernel does not support oom control")
 | 
			
		||||
	}
 | 
			
		||||
	memorySwappiness := cgroupEnabled(mountPoint, "memory.swappiness")
 | 
			
		||||
	if !quiet && !memorySwappiness {
 | 
			
		||||
		logrus.Warn("Your kernel does not support memory swappiness")
 | 
			
		||||
	}
 | 
			
		||||
	kernelMemory := cgroupEnabled(mountPoint, "memory.kmem.limit_in_bytes")
 | 
			
		||||
	if !quiet && !kernelMemory {
 | 
			
		||||
		logrus.Warn("Your kernel does not support kernel memory limit")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return cgroupMemInfo{
 | 
			
		||||
		MemoryLimit:       true,
 | 
			
		||||
		SwapLimit:         swapLimit,
 | 
			
		||||
		MemoryReservation: memoryReservation,
 | 
			
		||||
		OomKillDisable:    oomKillDisable,
 | 
			
		||||
		MemorySwappiness:  memorySwappiness,
 | 
			
		||||
		KernelMemory:      kernelMemory,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// checkCgroupCPU reads the cpu information from the cpu cgroup mount point.
 | 
			
		||||
func checkCgroupCPU(cgMounts map[string]string, quiet bool) cgroupCPUInfo {
 | 
			
		||||
	mountPoint, ok := cgMounts["cpu"]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		if !quiet {
 | 
			
		||||
			logrus.Warn("Unable to find cpu cgroup in mounts")
 | 
			
		||||
		}
 | 
			
		||||
		return cgroupCPUInfo{}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cpuShares := cgroupEnabled(mountPoint, "cpu.shares")
 | 
			
		||||
	if !quiet && !cpuShares {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup cpu shares")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cpuCfsPeriod := cgroupEnabled(mountPoint, "cpu.cfs_period_us")
 | 
			
		||||
	if !quiet && !cpuCfsPeriod {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup cfs period")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cpuCfsQuota := cgroupEnabled(mountPoint, "cpu.cfs_quota_us")
 | 
			
		||||
	if !quiet && !cpuCfsQuota {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup cfs quotas")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cpuRealtimePeriod := cgroupEnabled(mountPoint, "cpu.rt_period_us")
 | 
			
		||||
	if !quiet && !cpuRealtimePeriod {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup rt period")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cpuRealtimeRuntime := cgroupEnabled(mountPoint, "cpu.rt_runtime_us")
 | 
			
		||||
	if !quiet && !cpuRealtimeRuntime {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup rt runtime")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return cgroupCPUInfo{
 | 
			
		||||
		CPUShares:          cpuShares,
 | 
			
		||||
		CPUCfsPeriod:       cpuCfsPeriod,
 | 
			
		||||
		CPUCfsQuota:        cpuCfsQuota,
 | 
			
		||||
		CPURealtimePeriod:  cpuRealtimePeriod,
 | 
			
		||||
		CPURealtimeRuntime: cpuRealtimeRuntime,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// checkCgroupBlkioInfo reads the blkio information from the blkio cgroup mount point.
 | 
			
		||||
func checkCgroupBlkioInfo(cgMounts map[string]string, quiet bool) cgroupBlkioInfo {
 | 
			
		||||
	mountPoint, ok := cgMounts["blkio"]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		if !quiet {
 | 
			
		||||
			logrus.Warn("Unable to find blkio cgroup in mounts")
 | 
			
		||||
		}
 | 
			
		||||
		return cgroupBlkioInfo{}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	weight := cgroupEnabled(mountPoint, "blkio.weight")
 | 
			
		||||
	if !quiet && !weight {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup blkio weight")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	weightDevice := cgroupEnabled(mountPoint, "blkio.weight_device")
 | 
			
		||||
	if !quiet && !weightDevice {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup blkio weight_device")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	readBpsDevice := cgroupEnabled(mountPoint, "blkio.throttle.read_bps_device")
 | 
			
		||||
	if !quiet && !readBpsDevice {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup blkio throttle.read_bps_device")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	writeBpsDevice := cgroupEnabled(mountPoint, "blkio.throttle.write_bps_device")
 | 
			
		||||
	if !quiet && !writeBpsDevice {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup blkio throttle.write_bps_device")
 | 
			
		||||
	}
 | 
			
		||||
	readIOpsDevice := cgroupEnabled(mountPoint, "blkio.throttle.read_iops_device")
 | 
			
		||||
	if !quiet && !readIOpsDevice {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup blkio throttle.read_iops_device")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	writeIOpsDevice := cgroupEnabled(mountPoint, "blkio.throttle.write_iops_device")
 | 
			
		||||
	if !quiet && !writeIOpsDevice {
 | 
			
		||||
		logrus.Warn("Your kernel does not support cgroup blkio throttle.write_iops_device")
 | 
			
		||||
	}
 | 
			
		||||
	return cgroupBlkioInfo{
 | 
			
		||||
		BlkioWeight:          weight,
 | 
			
		||||
		BlkioWeightDevice:    weightDevice,
 | 
			
		||||
		BlkioReadBpsDevice:   readBpsDevice,
 | 
			
		||||
		BlkioWriteBpsDevice:  writeBpsDevice,
 | 
			
		||||
		BlkioReadIOpsDevice:  readIOpsDevice,
 | 
			
		||||
		BlkioWriteIOpsDevice: writeIOpsDevice,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// checkCgroupCpusetInfo reads the cpuset information from the cpuset cgroup mount point.
 | 
			
		||||
func checkCgroupCpusetInfo(cgMounts map[string]string, quiet bool) cgroupCpusetInfo {
 | 
			
		||||
	mountPoint, ok := cgMounts["cpuset"]
 | 
			
		||||
	if !ok {
 | 
			
		||||
		if !quiet {
 | 
			
		||||
			logrus.Warn("Unable to find cpuset cgroup in mounts")
 | 
			
		||||
		}
 | 
			
		||||
		return cgroupCpusetInfo{}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cpus, err := ioutil.ReadFile(path.Join(mountPoint, "cpuset.cpus"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return cgroupCpusetInfo{}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	mems, err := ioutil.ReadFile(path.Join(mountPoint, "cpuset.mems"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return cgroupCpusetInfo{}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return cgroupCpusetInfo{
 | 
			
		||||
		Cpuset: true,
 | 
			
		||||
		Cpus:   strings.TrimSpace(string(cpus)),
 | 
			
		||||
		Mems:   strings.TrimSpace(string(mems)),
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// checkCgroupPids reads the pids information from the pids cgroup mount point.
 | 
			
		||||
func checkCgroupPids(quiet bool) cgroupPids {
 | 
			
		||||
	_, err := cgroups.FindCgroupMountpoint("pids")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if !quiet {
 | 
			
		||||
			logrus.Warn(err)
 | 
			
		||||
		}
 | 
			
		||||
		return cgroupPids{}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return cgroupPids{
 | 
			
		||||
		PidsLimit: true,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func cgroupEnabled(mountPoint, name string) bool {
 | 
			
		||||
	_, err := os.Stat(path.Join(mountPoint, name))
 | 
			
		||||
	return err == nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func readProcBool(path string) bool {
 | 
			
		||||
	val, err := ioutil.ReadFile(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	return strings.TrimSpace(string(val)) == "1"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										121
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_solaris.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_solaris.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
			
		||||
// +build solaris,cgo
 | 
			
		||||
 | 
			
		||||
package sysinfo
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
#cgo LDFLAGS: -llgrp
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <sys/lgrp_user.h>
 | 
			
		||||
int getLgrpCount() {
 | 
			
		||||
	lgrp_cookie_t lgrpcookie = LGRP_COOKIE_NONE;
 | 
			
		||||
	uint_t nlgrps;
 | 
			
		||||
 | 
			
		||||
	if ((lgrpcookie = lgrp_init(LGRP_VIEW_OS)) == LGRP_COOKIE_NONE) {
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
	nlgrps = lgrp_nlgrps(lgrpcookie);
 | 
			
		||||
	return nlgrps;
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
import "C"
 | 
			
		||||
 | 
			
		||||
// IsCPUSharesAvailable returns whether CPUShares setting is supported.
 | 
			
		||||
// We need FSS to be set as default scheduling class to support CPU Shares
 | 
			
		||||
func IsCPUSharesAvailable() bool {
 | 
			
		||||
	cmd := exec.Command("/usr/sbin/dispadmin", "-d")
 | 
			
		||||
	outBuf := new(bytes.Buffer)
 | 
			
		||||
	errBuf := new(bytes.Buffer)
 | 
			
		||||
	cmd.Stderr = errBuf
 | 
			
		||||
	cmd.Stdout = outBuf
 | 
			
		||||
 | 
			
		||||
	if err := cmd.Run(); err != nil {
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
	return (strings.Contains(outBuf.String(), "FSS"))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// New returns a new SysInfo, using the filesystem to detect which features
 | 
			
		||||
// the kernel supports.
 | 
			
		||||
//NOTE Solaris: If we change the below capabilities be sure
 | 
			
		||||
// to update verifyPlatformContainerSettings() in daemon_solaris.go
 | 
			
		||||
func New(quiet bool) *SysInfo {
 | 
			
		||||
	sysInfo := &SysInfo{}
 | 
			
		||||
	sysInfo.cgroupMemInfo = setCgroupMem(quiet)
 | 
			
		||||
	sysInfo.cgroupCPUInfo = setCgroupCPU(quiet)
 | 
			
		||||
	sysInfo.cgroupBlkioInfo = setCgroupBlkioInfo(quiet)
 | 
			
		||||
	sysInfo.cgroupCpusetInfo = setCgroupCPUsetInfo(quiet)
 | 
			
		||||
 | 
			
		||||
	sysInfo.IPv4ForwardingDisabled = false
 | 
			
		||||
 | 
			
		||||
	sysInfo.AppArmor = false
 | 
			
		||||
 | 
			
		||||
	return sysInfo
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// setCgroupMem reads the memory information for Solaris.
 | 
			
		||||
func setCgroupMem(quiet bool) cgroupMemInfo {
 | 
			
		||||
 | 
			
		||||
	return cgroupMemInfo{
 | 
			
		||||
		MemoryLimit:       true,
 | 
			
		||||
		SwapLimit:         true,
 | 
			
		||||
		MemoryReservation: false,
 | 
			
		||||
		OomKillDisable:    false,
 | 
			
		||||
		MemorySwappiness:  false,
 | 
			
		||||
		KernelMemory:      false,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// setCgroupCPU reads the cpu information for Solaris.
 | 
			
		||||
func setCgroupCPU(quiet bool) cgroupCPUInfo {
 | 
			
		||||
 | 
			
		||||
	return cgroupCPUInfo{
 | 
			
		||||
		CPUShares:          true,
 | 
			
		||||
		CPUCfsPeriod:       false,
 | 
			
		||||
		CPUCfsQuota:        true,
 | 
			
		||||
		CPURealtimePeriod:  false,
 | 
			
		||||
		CPURealtimeRuntime: false,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// blkio switches are not supported in Solaris.
 | 
			
		||||
func setCgroupBlkioInfo(quiet bool) cgroupBlkioInfo {
 | 
			
		||||
 | 
			
		||||
	return cgroupBlkioInfo{
 | 
			
		||||
		BlkioWeight:       false,
 | 
			
		||||
		BlkioWeightDevice: false,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// setCgroupCPUsetInfo reads the cpuset information for Solaris.
 | 
			
		||||
func setCgroupCPUsetInfo(quiet bool) cgroupCpusetInfo {
 | 
			
		||||
 | 
			
		||||
	return cgroupCpusetInfo{
 | 
			
		||||
		Cpuset: true,
 | 
			
		||||
		Cpus:   getCPUCount(),
 | 
			
		||||
		Mems:   getLgrpCount(),
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getCPUCount() string {
 | 
			
		||||
	ncpus := C.sysconf(C._SC_NPROCESSORS_ONLN)
 | 
			
		||||
	if ncpus <= 0 {
 | 
			
		||||
		return ""
 | 
			
		||||
	}
 | 
			
		||||
	return strconv.FormatInt(int64(ncpus), 16)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getLgrpCount() string {
 | 
			
		||||
	nlgrps := C.getLgrpCount()
 | 
			
		||||
	if nlgrps <= 0 {
 | 
			
		||||
		return ""
 | 
			
		||||
	}
 | 
			
		||||
	return strconv.FormatInt(int64(nlgrps), 16)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_unix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_unix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
// +build !linux,!solaris,!windows
 | 
			
		||||
 | 
			
		||||
package sysinfo
 | 
			
		||||
 | 
			
		||||
// New returns an empty SysInfo for non linux nor solaris for now.
 | 
			
		||||
func New(quiet bool) *SysInfo {
 | 
			
		||||
	sysInfo := &SysInfo{}
 | 
			
		||||
	return sysInfo
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
// +build windows
 | 
			
		||||
 | 
			
		||||
package sysinfo
 | 
			
		||||
 | 
			
		||||
// New returns an empty SysInfo for windows for now.
 | 
			
		||||
func New(quiet bool) *SysInfo {
 | 
			
		||||
	sysInfo := &SysInfo{}
 | 
			
		||||
	return sysInfo
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user