summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cirrus.yml6
-rw-r--r--Dockerfile8
-rw-r--r--Dockerfile.centos8
-rw-r--r--Dockerfile.fedora8
-rw-r--r--cmd/podman/cliconfig/config.go3
-rw-r--r--cmd/podman/generate_kube.go19
-rw-r--r--cmd/podman/restore.go18
-rw-r--r--completions/bash/podman4
-rw-r--r--contrib/cirrus/packer/fedora_setup.sh2
-rw-r--r--contrib/cirrus/packer/ubuntu_setup.sh2
-rw-r--r--contrib/gate/Dockerfile1
-rw-r--r--docs/podman-container-restore.1.md4
-rw-r--r--docs/podman-generate-kube.1.md4
-rw-r--r--test/e2e/generate_kube_test.go40
-rw-r--r--test/system/005-info.bats4
-rw-r--r--test/system/120-load.bats4
16 files changed, 92 insertions, 43 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index cc645e601..4344b6b0a 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -31,9 +31,9 @@ env:
####
#### Cache-image names to test with
###
- FEDORA_CACHE_IMAGE_NAME: "fedora-29-libpod-5171433328607232"
- PRIOR_FEDORA_CACHE_IMAGE_NAME: "fedora-28-libpod-5171433328607232"
- UBUNTU_CACHE_IMAGE_NAME: "ubuntu-18-libpod-5171433328607232"
+ FEDORA_CACHE_IMAGE_NAME: "fedora-29-libpod-5157899144265728"
+ PRIOR_FEDORA_CACHE_IMAGE_NAME: "fedora-28-libpod-5157899144265728"
+ UBUNTU_CACHE_IMAGE_NAME: "ubuntu-18-libpod-5157899144265728"
####
#### Variables for composing new cache-images (used in PR testing) from
diff --git a/Dockerfile b/Dockerfile
index 4fc85e959..d729c00dc 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -79,14 +79,6 @@ RUN set -x \
&& cp bin/* /usr/libexec/cni \
&& rm -rf "$GOPATH"
-# Install buildah
-RUN set -x \
- && export GOPATH=/go \
- && git clone https://github.com/containers/buildah "$GOPATH/src/github.com/containers/buildah" \
- && cd "$GOPATH/src/github.com/containers/buildah" \
- && make \
- && make install
-
# Install ginkgo
RUN set -x \
&& export GOPATH=/go \
diff --git a/Dockerfile.centos b/Dockerfile.centos
index 159449c63..c1d93d5d3 100644
--- a/Dockerfile.centos
+++ b/Dockerfile.centos
@@ -38,14 +38,6 @@ RUN set -x \
&& cp bin/* /usr/libexec/cni \
&& rm -rf "$GOPATH"
-# Install buildah
-RUN set -x \
- && export GOPATH=/go \
- && git clone https://github.com/containers/buildah "$GOPATH/src/github.com/containers/buildah" \
- && cd "$GOPATH/src/github.com/containers/buildah" \
- && make \
- && make install
-
# Install ginkgo
RUN set -x \
&& export GOPATH=/go \
diff --git a/Dockerfile.fedora b/Dockerfile.fedora
index 74a770a90..d7c2d07e1 100644
--- a/Dockerfile.fedora
+++ b/Dockerfile.fedora
@@ -42,14 +42,6 @@ RUN set -x \
&& cp bin/* /usr/libexec/cni \
&& rm -rf "$GOPATH"
-# Install buildah
-RUN set -x \
- && export GOPATH=/go \
- && git clone https://github.com/containers/buildah "$GOPATH/src/github.com/containers/buildah" \
- && cd "$GOPATH/src/github.com/containers/buildah" \
- && make \
- && make install
-
# Install ginkgo
RUN set -x \
&& export GOPATH=/go \
diff --git a/cmd/podman/cliconfig/config.go b/cmd/podman/cliconfig/config.go
index b8b1648b8..545166d05 100644
--- a/cmd/podman/cliconfig/config.go
+++ b/cmd/podman/cliconfig/config.go
@@ -145,7 +145,8 @@ type ExportValues struct {
}
type GenerateKubeValues struct {
PodmanCommand
- Service bool
+ Service bool
+ Filename string
}
type GenerateSystemdValues struct {
diff --git a/cmd/podman/generate_kube.go b/cmd/podman/generate_kube.go
index 318dd0771..3969e3132 100644
--- a/cmd/podman/generate_kube.go
+++ b/cmd/podman/generate_kube.go
@@ -2,6 +2,9 @@ package main
import (
"fmt"
+ "io/ioutil"
+ "os"
+
"github.com/containers/libpod/cmd/podman/cliconfig"
"github.com/containers/libpod/pkg/adapter"
podmanVersion "github.com/containers/libpod/version"
@@ -37,6 +40,7 @@ func init() {
containerKubeCommand.SetUsageTemplate(UsageTemplate())
flags := containerKubeCommand.Flags()
flags.BoolVarP(&containerKubeCommand.Service, "service", "s", false, "Generate YAML for kubernetes service object")
+ flags.StringVarP(&containerKubeCommand.Filename, "filename", "f", "", "Filename to output to")
}
func generateKubeYAMLCmd(c *cliconfig.GenerateKubeValues) error {
@@ -88,8 +92,19 @@ func generateKubeYAMLCmd(c *cliconfig.GenerateKubeValues) error {
output = append(output, []byte("---\n")...)
output = append(output, marshalledService...)
}
- // Output the v1.Pod with the v1.Container
- fmt.Println(string(output))
+
+ if c.Filename != "" {
+ if _, err := os.Stat(c.Filename); err == nil {
+ return errors.Errorf("cannot write to %q - file exists", c.Filename)
+ }
+
+ if err := ioutil.WriteFile(c.Filename, output, 0644); err != nil {
+ return err
+ }
+ } else {
+ // Output the v1.Pod with the v1.Container
+ fmt.Println(string(output))
+ }
return nil
}
diff --git a/cmd/podman/restore.go b/cmd/podman/restore.go
index 9c77d4a5e..6e445e5df 100644
--- a/cmd/podman/restore.go
+++ b/cmd/podman/restore.go
@@ -76,8 +76,22 @@ func restoreCmd(c *cliconfig.RestoreValues, cmd *cobra.Command) error {
return errors.Errorf("--tcp-established cannot be used with --name")
}
- if (c.Import != "") && (c.All || c.Latest) {
- return errors.Errorf("Cannot use --import and --all or --latest at the same time")
+ argLen := len(c.InputArgs)
+ if c.Import != "" {
+ if c.All || c.Latest {
+ return errors.Errorf("Cannot use --import with --all or --latest")
+ }
+ if argLen > 0 {
+ return errors.Errorf("Cannot use --import with positional arguments")
+ }
}
+
+ if (c.All || c.Latest) && argLen > 0 {
+ return errors.Errorf("no arguments are needed with --all or --latest")
+ }
+ if argLen < 1 && !c.All && !c.Latest && c.Import == "" {
+ return errors.Errorf("you must provide at least one name or id")
+ }
+
return runtime.Restore(getContext(), c, options)
}
diff --git a/completions/bash/podman b/completions/bash/podman
index efb8a6a9b..b049f309a 100644
--- a/completions/bash/podman
+++ b/completions/bash/podman
@@ -2467,7 +2467,9 @@ _podman_healthcheck_run() {
}
_podman_generate_kube() {
- local options_with_args=""
+ local options_with_args="
+ --filename -f
+ "
local boolean_options="
-h
diff --git a/contrib/cirrus/packer/fedora_setup.sh b/contrib/cirrus/packer/fedora_setup.sh
index 33e240895..4388dc992 100644
--- a/contrib/cirrus/packer/fedora_setup.sh
+++ b/contrib/cirrus/packer/fedora_setup.sh
@@ -76,8 +76,6 @@ install_conmon
CNI_COMMIT=$FEDORA_CNI_COMMIT
install_cni_plugins
-install_buildah
-
sudo /tmp/libpod/hack/install_catatonit.sh
rh_finalize # N/B: Halts system!
diff --git a/contrib/cirrus/packer/ubuntu_setup.sh b/contrib/cirrus/packer/ubuntu_setup.sh
index 17e274d97..f183932c1 100644
--- a/contrib/cirrus/packer/ubuntu_setup.sh
+++ b/contrib/cirrus/packer/ubuntu_setup.sh
@@ -99,8 +99,6 @@ install_conmon
install_cni_plugins
-install_buildah
-
sudo /tmp/libpod/hack/install_catatonit.sh
install_varlink
diff --git a/contrib/gate/Dockerfile b/contrib/gate/Dockerfile
index 9a6f5dc8d..630371c76 100644
--- a/contrib/gate/Dockerfile
+++ b/contrib/gate/Dockerfile
@@ -2,7 +2,6 @@ FROM fedora:29
RUN dnf -y install \
atomic-registries \
btrfs-progs-devel \
- buildah \
bzip2 \
conmon \
container-selinux \
diff --git a/docs/podman-container-restore.1.md b/docs/podman-container-restore.1.md
index 5b94cd2fa..c96a37f80 100644
--- a/docs/podman-container-restore.1.md
+++ b/docs/podman-container-restore.1.md
@@ -45,8 +45,8 @@ connections.
**--import, -i**
Import a checkpoint tar.gz file, which was exported by Podman. This can be used
-to import a checkpointed container from another host. It is not necessary to specify
-a container when restoring from an exported checkpoint.
+to import a checkpointed container from another host. Do not specify a *container*
+argument when using this option.
**--name, -n**
diff --git a/docs/podman-generate-kube.1.md b/docs/podman-generate-kube.1.md
index dd9068ef1..88d8e9627 100644
--- a/docs/podman-generate-kube.1.md
+++ b/docs/podman-generate-kube.1.md
@@ -14,6 +14,10 @@ Note that the generated Kubernetes YAML file can be used to re-run the deploymen
## OPTIONS:
+**--filename**, **-f**=**filename**
+
+Output to the given file, instead of STDOUT. If the file already exists, `generate kube` will refuse to replace it and return an error.
+
**--service**, **-s**
Generate a Kubernetes service object in addition to the Pods. Used to generate a Service specification for the corresponding Pod ouput. In particular, if the object has portmap bindings, the service specification will include a NodePort declaration to expose the service. A
diff --git a/test/e2e/generate_kube_test.go b/test/e2e/generate_kube_test.go
index 95d46476d..40cc534c2 100644
--- a/test/e2e/generate_kube_test.go
+++ b/test/e2e/generate_kube_test.go
@@ -4,6 +4,7 @@ package integration
import (
"os"
+ "path/filepath"
. "github.com/containers/libpod/test/utils"
"github.com/ghodss/yaml"
@@ -104,4 +105,43 @@ var _ = Describe("Podman generate kube", func() {
_, err := yaml.Marshal(kube.OutputToString())
Expect(err).To(BeNil())
})
+
+ It("podman generate and reimport kube on pod", func() {
+ podName := "toppod"
+ _, rc, _ := podmanTest.CreatePod(podName)
+ Expect(rc).To(Equal(0))
+
+ session := podmanTest.Podman([]string{"create", "--pod", podName, "--name", "test1", ALPINE, "top"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ session2 := podmanTest.Podman([]string{"create", "--pod", podName, "--name", "test2", ALPINE, "top"})
+ session2.WaitWithDefaultTimeout()
+ Expect(session2.ExitCode()).To(Equal(0))
+
+ outputFile := filepath.Join(podmanTest.RunRoot, "pod.yaml")
+ kube := podmanTest.Podman([]string{"generate", "kube", "-f", outputFile, podName})
+ kube.WaitWithDefaultTimeout()
+ Expect(kube.ExitCode()).To(Equal(0))
+
+ session3 := podmanTest.Podman([]string{"pod", "rm", "-af"})
+ session3.WaitWithDefaultTimeout()
+ Expect(session3.ExitCode()).To(Equal(0))
+
+ session4 := podmanTest.Podman([]string{"play", "kube", outputFile})
+ session4.WaitWithDefaultTimeout()
+ Expect(session4.ExitCode()).To(Equal(0))
+
+ session5 := podmanTest.Podman([]string{"pod", "ps"})
+ session5.WaitWithDefaultTimeout()
+ Expect(session5.ExitCode()).To(Equal(0))
+ Expect(session5.OutputToString()).To(ContainSubstring(podName))
+
+ session6 := podmanTest.Podman([]string{"ps", "-a"})
+ session6.WaitWithDefaultTimeout()
+ Expect(session6.ExitCode()).To(Equal(0))
+ psOut := session6.OutputToString()
+ Expect(psOut).To(ContainSubstring("test1"))
+ Expect(psOut).To(ContainSubstring("test2"))
+ })
})
diff --git a/test/system/005-info.bats b/test/system/005-info.bats
index 47c7a52fc..0068e35a9 100644
--- a/test/system/005-info.bats
+++ b/test/system/005-info.bats
@@ -14,7 +14,7 @@ Distribution:
OCIRuntime:\\\s\\\+package:
os:
rootless:
-insecure registries:
+registries:
store:
GraphDriverName:
GraphRoot:
@@ -37,9 +37,7 @@ RunRoot:
tests="
host.BuildahVersion | [0-9.]
-host.Conmon.package | $expr_nvr
host.Conmon.path | $expr_path
-host.OCIRuntime.package | $expr_nvr
host.OCIRuntime.path | $expr_path
store.ConfigFile | $expr_path
store.GraphDriverName | [a-z0-9]\\\+\\\$
diff --git a/test/system/120-load.bats b/test/system/120-load.bats
index dedfe6172..f2dedb73f 100644
--- a/test/system/120-load.bats
+++ b/test/system/120-load.bats
@@ -87,6 +87,10 @@ verify_iid_and_name() {
@test "podman load - will not read from tty" {
+ if [ ! -t 0 ]; then
+ skip "STDIN is not a tty"
+ fi
+
run_podman 125 load
is "$output" \
"Error: cannot read from terminal. Use command-line redirection" \