summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/podman/common/create.go10
-rw-r--r--libpod/pod.go5
-rw-r--r--libpod/pod_api.go2
-rw-r--r--pkg/specgen/config_linux.go93
-rw-r--r--pkg/specgen/generate/container.go2
-rw-r--r--pkg/specgen/generate/container_create.go2
-rw-r--r--pkg/specgen/generate/namespaces.go4
-rw-r--r--pkg/specgen/generate/oci.go4
8 files changed, 18 insertions, 104 deletions
diff --git a/cmd/podman/common/create.go b/cmd/podman/common/create.go
index 7086dc839..4d4dea0d2 100644
--- a/cmd/podman/common/create.go
+++ b/cmd/podman/common/create.go
@@ -50,7 +50,7 @@ func GetCreateFlags(cf *ContainerCLIOpts) *pflag.FlagSet {
"Drop capabilities from the container",
)
createFlags.String(
- "cgroupns", containerConfig.CgroupNS(),
+ "cgroupns", "",
"cgroup namespace to use",
)
createFlags.StringVar(
@@ -244,7 +244,7 @@ func GetCreateFlags(cf *ContainerCLIOpts) *pflag.FlagSet {
"Keep STDIN open even if not attached",
)
createFlags.String(
- "ipc", containerConfig.IPCNS(),
+ "ipc", "",
"IPC namespace to use",
)
createFlags.StringVar(
@@ -325,7 +325,7 @@ func GetCreateFlags(cf *ContainerCLIOpts) *pflag.FlagSet {
)
// markFlagHidden(createFlags, "override-os")
createFlags.String(
- "pid", containerConfig.PidNS(),
+ "pid", "",
"PID namespace to use",
)
createFlags.Int64Var(
@@ -454,11 +454,11 @@ func GetCreateFlags(cf *ContainerCLIOpts) *pflag.FlagSet {
"Username or UID (format: <name|uid>[:<group|gid>])",
)
createFlags.String(
- "userns", containerConfig.Containers.UserNS,
+ "userns", "",
"User namespace to use",
)
createFlags.String(
- "uts", containerConfig.Containers.UTSNS,
+ "uts", "",
"UTS namespace to use",
)
createFlags.StringArrayVar(
diff --git a/libpod/pod.go b/libpod/pod.go
index 34ceef5ef..8afaa6052 100644
--- a/libpod/pod.go
+++ b/libpod/pod.go
@@ -171,6 +171,11 @@ func (p *Pod) SharesCgroup() bool {
return p.config.UsePodCgroupNS
}
+// Hostname returns the hostname of the pod.
+func (p *Pod) Hostname() string {
+ return p.config.Hostname
+}
+
// CgroupPath returns the path to the pod's CGroup
func (p *Pod) CgroupPath() (string, error) {
p.lock.Lock()
diff --git a/libpod/pod_api.go b/libpod/pod_api.go
index 0be9f2573..e2c4b515d 100644
--- a/libpod/pod_api.go
+++ b/libpod/pod_api.go
@@ -490,7 +490,7 @@ func (p *Pod) Inspect() (*define.InspectPodData, error) {
Namespace: p.Namespace(),
Created: p.CreatedTime(),
State: podState,
- Hostname: "",
+ Hostname: p.config.Hostname,
Labels: p.Labels(),
CreateCgroup: false,
CgroupParent: p.CgroupParent(),
diff --git a/pkg/specgen/config_linux.go b/pkg/specgen/config_linux.go
deleted file mode 100644
index 82a371492..000000000
--- a/pkg/specgen/config_linux.go
+++ /dev/null
@@ -1,93 +0,0 @@
-package specgen
-
-//func createBlockIO() (*spec.LinuxBlockIO, error) {
-// var ret *spec.LinuxBlockIO
-// bio := &spec.LinuxBlockIO{}
-// if c.Resources.BlkioWeight > 0 {
-// ret = bio
-// bio.Weight = &c.Resources.BlkioWeight
-// }
-// if len(c.Resources.BlkioWeightDevice) > 0 {
-// var lwds []spec.LinuxWeightDevice
-// ret = bio
-// for _, i := range c.Resources.BlkioWeightDevice {
-// wd, err := ValidateweightDevice(i)
-// if err != nil {
-// return ret, errors.Wrapf(err, "invalid values for blkio-weight-device")
-// }
-// wdStat, err := GetStatFromPath(wd.Path)
-// if err != nil {
-// return ret, errors.Wrapf(err, "error getting stat from path %q", wd.Path)
-// }
-// lwd := spec.LinuxWeightDevice{
-// Weight: &wd.Weight,
-// }
-// lwd.Major = int64(unix.Major(wdStat.Rdev))
-// lwd.Minor = int64(unix.Minor(wdStat.Rdev))
-// lwds = append(lwds, lwd)
-// }
-// bio.WeightDevice = lwds
-// }
-// if len(c.Resources.DeviceReadBps) > 0 {
-// ret = bio
-// readBps, err := makeThrottleArray(c.Resources.DeviceReadBps, bps)
-// if err != nil {
-// return ret, err
-// }
-// bio.ThrottleReadBpsDevice = readBps
-// }
-// if len(c.Resources.DeviceWriteBps) > 0 {
-// ret = bio
-// writeBpds, err := makeThrottleArray(c.Resources.DeviceWriteBps, bps)
-// if err != nil {
-// return ret, err
-// }
-// bio.ThrottleWriteBpsDevice = writeBpds
-// }
-// if len(c.Resources.DeviceReadIOps) > 0 {
-// ret = bio
-// readIOps, err := makeThrottleArray(c.Resources.DeviceReadIOps, iops)
-// if err != nil {
-// return ret, err
-// }
-// bio.ThrottleReadIOPSDevice = readIOps
-// }
-// if len(c.Resources.DeviceWriteIOps) > 0 {
-// ret = bio
-// writeIOps, err := makeThrottleArray(c.Resources.DeviceWriteIOps, iops)
-// if err != nil {
-// return ret, err
-// }
-// bio.ThrottleWriteIOPSDevice = writeIOps
-// }
-// return ret, nil
-//}
-
-//func makeThrottleArray(throttleInput []string, rateType int) ([]spec.LinuxThrottleDevice, error) {
-// var (
-// ltds []spec.LinuxThrottleDevice
-// t *throttleDevice
-// err error
-// )
-// for _, i := range throttleInput {
-// if rateType == bps {
-// t, err = validateBpsDevice(i)
-// } else {
-// t, err = validateIOpsDevice(i)
-// }
-// if err != nil {
-// return []spec.LinuxThrottleDevice{}, err
-// }
-// ltdStat, err := GetStatFromPath(t.path)
-// if err != nil {
-// return ltds, errors.Wrapf(err, "error getting stat from path %q", t.path)
-// }
-// ltd := spec.LinuxThrottleDevice{
-// Rate: t.rate,
-// }
-// ltd.Major = int64(unix.Major(ltdStat.Rdev))
-// ltd.Minor = int64(unix.Minor(ltdStat.Rdev))
-// ltds = append(ltds, ltd)
-// }
-// return ltds, nil
-//}
diff --git a/pkg/specgen/generate/container.go b/pkg/specgen/generate/container.go
index a217125f4..3d70571d5 100644
--- a/pkg/specgen/generate/container.go
+++ b/pkg/specgen/generate/container.go
@@ -194,7 +194,7 @@ func finishThrottleDevices(s *specgen.SpecGenerator) error {
s.ResourceLimits.BlockIO.ThrottleReadIOPSDevice = append(s.ResourceLimits.BlockIO.ThrottleReadIOPSDevice, v)
}
}
- if iops := s.ThrottleWriteBpsDevice; len(iops) > 0 {
+ if iops := s.ThrottleWriteIOPSDevice; len(iops) > 0 {
for k, v := range iops {
statT := unix.Stat_t{}
if err := unix.Stat(k, &statT); err != nil {
diff --git a/pkg/specgen/generate/container_create.go b/pkg/specgen/generate/container_create.go
index 7ddfed339..de398d1e3 100644
--- a/pkg/specgen/generate/container_create.go
+++ b/pkg/specgen/generate/container_create.go
@@ -114,7 +114,7 @@ func MakeContainer(ctx context.Context, rt *libpod.Runtime, s *specgen.SpecGener
}
options = append(options, libpod.WithExitCommand(exitCommandArgs))
- runtimeSpec, err := SpecGenToOCI(ctx, s, rt, rtc, newImage, finalMounts)
+ runtimeSpec, err := SpecGenToOCI(ctx, s, rt, rtc, newImage, finalMounts, pod)
if err != nil {
return nil, err
}
diff --git a/pkg/specgen/generate/namespaces.go b/pkg/specgen/generate/namespaces.go
index 138d9e0cd..ffa96a5cf 100644
--- a/pkg/specgen/generate/namespaces.go
+++ b/pkg/specgen/generate/namespaces.go
@@ -265,7 +265,7 @@ func GenerateNamespaceOptions(ctx context.Context, s *specgen.SpecGenerator, rt
return toReturn, nil
}
-func specConfigureNamespaces(s *specgen.SpecGenerator, g *generate.Generator, rt *libpod.Runtime) error {
+func specConfigureNamespaces(s *specgen.SpecGenerator, g *generate.Generator, rt *libpod.Runtime, pod *libpod.Pod) error {
// PID
switch s.PidNS.NSMode {
case specgen.Path:
@@ -326,6 +326,8 @@ func specConfigureNamespaces(s *specgen.SpecGenerator, g *generate.Generator, rt
hostname := s.Hostname
if hostname == "" {
switch {
+ case s.UtsNS.NSMode == specgen.FromPod:
+ hostname = pod.Hostname()
case s.UtsNS.NSMode == specgen.FromContainer:
utsCtr, err := rt.LookupContainer(s.UtsNS.Value)
if err != nil {
diff --git a/pkg/specgen/generate/oci.go b/pkg/specgen/generate/oci.go
index 11b18e2d0..266abd28d 100644
--- a/pkg/specgen/generate/oci.go
+++ b/pkg/specgen/generate/oci.go
@@ -118,7 +118,7 @@ func makeCommand(ctx context.Context, s *specgen.SpecGenerator, img *image.Image
return finalCommand, nil
}
-func SpecGenToOCI(ctx context.Context, s *specgen.SpecGenerator, rt *libpod.Runtime, rtc *config.Config, newImage *image.Image, mounts []spec.Mount) (*spec.Spec, error) {
+func SpecGenToOCI(ctx context.Context, s *specgen.SpecGenerator, rt *libpod.Runtime, rtc *config.Config, newImage *image.Image, mounts []spec.Mount, pod *libpod.Pod) (*spec.Spec, error) {
var (
inUserNS bool
)
@@ -300,7 +300,7 @@ func SpecGenToOCI(ctx context.Context, s *specgen.SpecGenerator, rt *libpod.Runt
}
// NAMESPACES
- if err := specConfigureNamespaces(s, &g, rt); err != nil {
+ if err := specConfigureNamespaces(s, &g, rt, pod); err != nil {
return nil, err
}
configSpec := g.Config