diff options
29 files changed, 831 insertions, 182 deletions
diff --git a/.cirrus.yml b/.cirrus.yml index 3b1c60638..c1b05c1bf 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -29,9 +29,9 @@ env: #### #### Cache-image names to test with ### - FEDORA_CACHE_IMAGE_NAME: "fedora-29-libpod-4844850202017792" - PRIOR_FEDORA_CACHE_IMAGE_NAME: "fedora-28-libpod-4844850202017792" - UBUNTU_CACHE_IMAGE_NAME: "ubuntu-18-libpod-4844850202017792" + FEDORA_CACHE_IMAGE_NAME: "fedora-30-libpod-5156500369047552" + PRIOR_FEDORA_CACHE_IMAGE_NAME: "fedora-29-libpod-5156500369047552" + UBUNTU_CACHE_IMAGE_NAME: "ubuntu-18-libpod-5156500369047552" #### #### Variables for composing new cache-images (used in PR testing) from @@ -209,8 +209,9 @@ build_each_commit_task: setup_environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}' build_each_commit_script: + - 'source $SCRIPT_BASE/lib.sh' - 'git fetch --depth $CIRRUS_CLONE_DEPTH origin $CIRRUS_BASE_BRANCH |& ${TIMESTAMP}' - - 'env GOPATH=/var/tmp/go/ make build-all-new-commits GIT_BASE_BRANCH=origin/$CIRRUS_BASE_BRANCH |& ${TIMESTAMP}' + - 'make build-all-new-commits GIT_BASE_BRANCH=origin/$CIRRUS_BASE_BRANCH |& ${TIMESTAMP}' on_failure: failed_master_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_master_failure.sh' @@ -265,7 +266,7 @@ testing_task: matrix: # Images are generated separately, from build_images_task (below) image_name: "${FEDORA_CACHE_IMAGE_NAME}" - #image_name: "${PRIOR_FEDORA_CACHE_IMAGE_NAME}" + image_name: "${PRIOR_FEDORA_CACHE_IMAGE_NAME}" image_name: "${UBUNTU_CACHE_IMAGE_NAME}" timeout_in: 120m @@ -373,6 +374,12 @@ test_build_cache_images_task: environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}' build_vm_images_script: '$SCRIPT_BASE/build_vm_images.sh |& ${TIMESTAMP}' + df_script: '${DFCMD}' + journalctl_b_script: 'journalctl -b' + + on_failure: + failed_df_script: '${DFCMD}' + failed_journalctl_b_script: 'journalctl -b || echo "Uh oh, journalctl -b failed"' # Test building of new cache-images for future PR testing, in this PR. @@ -391,8 +398,8 @@ verify_test_built_images_task: gce_instance: matrix: # Images are generated separately, from build_images_task (below) - #image_name: "fedora-28${BUILT_IMAGE_SUFFIX}" image_name: "fedora-29${BUILT_IMAGE_SUFFIX}" + image_name: "fedora-30${BUILT_IMAGE_SUFFIX}" image_name: "ubuntu-18${BUILT_IMAGE_SUFFIX}" env: @@ -411,56 +418,6 @@ verify_test_built_images_task: <<: *standardlogs -# Build new cache-images for future PR testing, but only after a PR merge. -# The cache-images save install/setup time needed test every PR. The 'active' images -# are selected by the 'image_name' items tasks above. Currently this requires -# manually updating the names, but this could be automated (see comment below). -build_cache_images_task: - # Only produce new cache-images after a PR merge, and if a magic string - # is present in the most recent ___commit-message___. - only_if: >- - $CIRRUS_BRANCH == 'master' && - $CIRRUS_CHANGE_MESSAGE =~ '.*\*\*\*\s*CIRRUS:\s*REBUILD\s*IMAGES\s*\*\*\*.*' - - # Require tests to pass first. - depends_on: - - "gating" - - "testing" - - "rootless_testing" - - # VMs created by packer are not cleaned up by cirrus - auto_cancellation: $CI != "true" - - gce_instance: - image_project: "libpod-218412" - zone: "us-central1-a" # Required by Cirrus for the time being - cpu: 4 - memory: "4Gb" - disk: 200 - image_name: "${IMAGE_BUILDER_CACHE_IMAGE_NAME}" - # Additional permissions for building GCE images, within a GCE VM - scopes: - - compute - - devstorage.full_control - - environment_script: '$SCRIPT_BASE/setup_environment.sh |& ${TIMESTAMP}' - build_vm_images_script: '$SCRIPT_BASE/build_vm_images.sh |& ${TIMESTAMP}' - - # TODO,Continuous Delivery: Automatically open a libpod PR after using 'sed' to replace - # the image_names with the new (just build) images. That will - # cause a new round of testing to happen (via the PR) using - # the new images. When all is good, the PR may be manually - # merged so all PR testing uses the new images. The script - # names (below) describe their purpose in this workflow. - # deploy_images_script: - # - clone_podman_release_branch.sh - # - modify_cirrus_yaml_image_names.sh - # - commit_and_create_upstream_pr.sh - - on_failure: - failed_master_script: '$CIRRUS_WORKING_DIR/$SCRIPT_BASE/notice_master_failure.sh |& ${TIMESTAMP}' - - # Post message to IRC if everything passed success_task: @@ -477,7 +434,6 @@ success_task: - "special_testing_in_podman" - "test_build_cache_images" - "verify_test_built_images" - - "build_cache_images" env: CIRRUS_WORKING_DIR: "/usr/src/libpod" diff --git a/Dockerfile.fedora b/Dockerfile.fedora index c34d4bb16..5cbc6e1fe 100644 --- a/Dockerfile.fedora +++ b/Dockerfile.fedora @@ -1,9 +1,8 @@ -FROM registry.fedoraproject.org/fedora:29 +FROM registry.fedoraproject.org/fedora:30 RUN dnf -y install btrfs-progs-devel \ atomic-registries \ bzip2 \ - conmon \ device-mapper-devel \ findutils \ git \ @@ -1,6 +1,6 @@ GO ?= go DESTDIR ?= -EPOCH_TEST_COMMIT ?= 90e3c9002b2293569e0cec168a30ecb962b00034 +EPOCH_TEST_COMMIT ?= 5df8178c995fe6422f0fed258cd65f6cbcf26f2e HEAD ?= HEAD CHANGELOG_BASE ?= HEAD~ CHANGELOG_TARGET ?= HEAD diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index d5717f7db..2264dbaa9 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,14 @@ # Release Notes +## 1.4.2 +### Bugfixes +- Fixed a bug where Podman could not run containers using an older version of Systemd as init ([#3295](https://github.com/containers/libpod/issues/3295)) + +### Misc +- Updated vendored Buildah to v1.9.0 to resolve a critical bug with Dockerfile `RUN` instructions +- The error message for running `podman kill` on containers that are not running has been improved +- The Podman remote client can now log to a file if syslog is not available + ## 1.4.1 ### Features - The `podman exec` command now sets its error code differently based on whether the container does not exist, and the command in the container does not exist diff --git a/changelog.txt b/changelog.txt index 3b1260c90..9e201ecb4 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,32 @@ +- Changelog for v1.4.2 (2019-06-18) + * Update release notes for Podman 1.4.2 + * updating podman logo files + * fix port -l timing with healthchecks + * Bump Buildah to v1.9.0 + * Swap to using the on-disk spec for inspect mounts + * Replace podman.svg; closes #3350 + * cmd, docs, test: fix some typos + * run BATS tests in Cirrus + * Move the Config portion of Inspect into libpod + * Add remote client logging to a file + * Fix subgidname option in docs for podman run + * stop/kill: inproper state errors: s/in state/is in state/ + * test: add test for logs -f + * kill: print ID and state for non-running containers + * API.md: fix few typos + * docs/podamn.1.md: fix typo: remove double the + * CONTRIBUTING.md: fix typo + * Remove unnecessary var type to fix lint warning + * Move installPrefix and etcDir into runtime.go + * Improve DESTDIR/PREFIX/ETCDIR handling + * Bump gitvalidation epoch + * Bump to v1.4.2-dev + * Change container command to contained + * Cirrus: Simplify log collection commands + * Accidently removed /run/lock from systemd mounts + * Add warning while untagging an image podman-load + * podman copy files to the volume with a container + - Changelog for v1.4.1 (2019-06-14) * Completely disable global options test * Update release notes for 1.4.1 diff --git a/cmd/podman/shared/container_inspect.go b/cmd/podman/shared/container_inspect.go index fed089d29..c89daf6bb 100644 --- a/cmd/podman/shared/container_inspect.go +++ b/cmd/podman/shared/container_inspect.go @@ -1,9 +1,6 @@ package shared import ( - "strings" - - "github.com/containers/image/manifest" "github.com/containers/libpod/libpod" cc "github.com/containers/libpod/pkg/spec" "github.com/docker/go-connections/nat" @@ -17,7 +14,6 @@ import ( type InspectContainer struct { *libpod.InspectContainerData HostConfig *InspectContainerHostConfig `json:"HostConfig"` - Config *InspectContainerConfig `json:"Config"` } // InspectContainerHostConfig holds Container configuration that is not specific @@ -82,31 +78,6 @@ type InspectContainerHostConfig struct { Tmpfs []string `json:"Tmpfs"` } -// InspectContainerConfig holds further data about a container, again mostly -// not directly stored in Libpod. This struct is matched to the output of -// `docker inspect`. -type InspectContainerConfig struct { - Hostname string `json:"Hostname"` - DomainName string `json:"Domainname"` //TODO - User specs.User `json:"User"` - AttachStdin bool `json:"AttachStdin"` //TODO - AttachStdout bool `json:"AttachStdout"` //TODO - AttachStderr bool `json:"AttachStderr"` //TODO - Tty bool `json:"Tty"` - OpenStdin bool `json:"OpenStdin"` - StdinOnce bool `json:"StdinOnce"` //TODO - Env []string `json:"Env"` - Cmd []string `json:"Cmd"` - Image string `json:"Image"` - Volumes map[string]struct{} `json:"Volumes"` - WorkingDir string `json:"WorkingDir"` - Entrypoint string `json:"Entrypoint"` - Labels map[string]string `json:"Labels"` - Annotations map[string]string `json:"Annotations"` - StopSignal uint `json:"StopSignal"` - Healthcheck *manifest.Schema2HealthConfig `json:"Healthcheck,omitempty"` -} - // InspectLogConfig holds information about a container's configured log driver // and is presently unused. It is retained for Docker compatibility. type InspectLogConfig struct { @@ -181,21 +152,6 @@ func GetCtrInspectInfo(config *libpod.ContainerConfig, ctrInspectData *libpod.In SecurityOpt: createArtifact.SecurityOpts, Tmpfs: createArtifact.Tmpfs, }, - &InspectContainerConfig{ - Hostname: spec.Hostname, - User: spec.Process.User, - Env: spec.Process.Env, - Image: config.RootfsImageName, - WorkingDir: spec.Process.Cwd, - Labels: config.Labels, - Annotations: spec.Annotations, - Tty: spec.Process.Terminal, - OpenStdin: config.Stdin, - StopSignal: config.StopSignal, - Cmd: config.Spec.Process.Args, - Entrypoint: strings.Join(createArtifact.Entrypoint, " "), - Healthcheck: config.HealthCheckConfig, - }, } return data, nil } diff --git a/contrib/cirrus/README.md b/contrib/cirrus/README.md index 94494a558..5ff4f290f 100644 --- a/contrib/cirrus/README.md +++ b/contrib/cirrus/README.md @@ -96,10 +96,18 @@ images following the standard naming format; ***however, only runs a limited sub-set of automated tests***. Validating newly built images fully, requires updating ``.cirrus.yml``. -***Manual Steps:*** Assuming `verify_test_built_images` passes, then +***N/B: Steps below are performed by automation*** + +1. Using the just build VM images, launch VMs and wait for them to boot. + +2. Execute the `setup_environment.sh` as in the `testing` task. + +2. Execute the `integration_test.sh` as in the `testing` task. + + +***Manual Steps:*** Assuming the automated steps pass, then you'll find the new image names displayed at the end of the -`test_build_cache_images_task` in the `build_vm_images` output. -For example: +`test_build_cache_images`. For example: ``` @@ -135,18 +143,6 @@ the magic ``***CIRRUS: TEST IMAGES***`` string. Keeping it and and test images again. -### ``build_cache_images`` Task *(Deprecated)* - -Exactly the same as ``test_build_cache_images_task`` task, but only runs on -the master branch. Requires a magic string to be in the `HEAD` -commit message: ``***CIRRUS: BUILD IMAGES***`` - -When successful, the manifest file along with all VM disks, are moved -into a dedicated google storage bucket, separate from the one used by -`test_build_cache_images_task`. These may be used to create new cache-images for -PR testing by manually importing them as described above. - - ### Base-images Base-images are VM disk-images specially prepared for executing as GCE VMs. @@ -158,10 +154,9 @@ as the standard 'cloud-init' services. with services pre-installed, for many platforms. For example, RHEL, CentOS, and Ubuntu. -* Google does ***not*** provide any images for Fedora or Fedora Atomic - Host (as of 11/2018), nor do they provide a base-image prepared to - run packer for creating other images in the ``build_vm_images`` Task - (above). +* Google does ***not*** provide any images for Fedora (as of 5/2019), nor do + they provide a base-image prepared to run packer for creating other images + in the ``test_build_vm_images`` Task (above). * Base images do not need to be produced often, but doing so completely manually would be time-consuming and error-prone. Therefor a special diff --git a/contrib/cirrus/integration_test.sh b/contrib/cirrus/integration_test.sh index f9ba010cd..b163834d5 100755 --- a/contrib/cirrus/integration_test.sh +++ b/contrib/cirrus/integration_test.sh @@ -28,8 +28,6 @@ then -e "DIST=$OS_RELEASE_ID" \ -e "CONTAINER_RUNTIME=$CONTAINER_RUNTIME" \ $IN_PODMAN_IMAGE bash $GOSRC/$SCRIPT_BASE/container_test.sh -b -i -t - - exit $? elif [[ "$SPECIALMODE" == "rootless" ]] then req_env_var ROOTLESS_USER @@ -52,5 +50,4 @@ else else make local${TESTSUITE} fi - exit $? fi diff --git a/contrib/cirrus/lib.sh b/contrib/cirrus/lib.sh index 97901cfc7..30141db67 100644 --- a/contrib/cirrus/lib.sh +++ b/contrib/cirrus/lib.sh @@ -55,15 +55,15 @@ PACKER_VER="1.3.5" # CSV of cache-image names to build (see $PACKER_BASE/libpod_images.json) # Base-images rarely change, define them here so they're out of the way. -PACKER_BUILDS="${PACKER_BUILDS:-ubuntu-18,fedora-29,fedora-28}" +PACKER_BUILDS="${PACKER_BUILDS:-ubuntu-18,fedora-30,fedora-29}" # Google-maintained base-image names UBUNTU_BASE_IMAGE="ubuntu-1804-bionic-v20181203a" # Manually produced base-image names (see $SCRIPT_BASE/README.md) -FEDORA_BASE_IMAGE="fedora-cloud-base-29-1-2-1541789245" -# FEDORA_BASE_IMAGE: "fedora-cloud-base-30-1-2-1556821664" -PRIOR_FEDORA_BASE_IMAGE="fedora-cloud-base-28-1-1-1544474897" -# PRIOR_FEDORA_BASE_IMAGE="fedora-cloud-base-29-1-2-1541789245" +FEDORA_BASE_IMAGE="fedora-cloud-base-30-1-2-1559164849" +PRIOR_FEDORA_BASE_IMAGE="fedora-cloud-base-29-1-2-1559164849" BUILT_IMAGE_SUFFIX="${BUILT_IMAGE_SUFFIX:--$CIRRUS_REPO_NAME-${CIRRUS_BUILD_ID}}" +# IN_PODMAN container image +IN_PODMAN_IMAGE="quay.io/libpod/in_podman:latest" # Safe env. vars. to transfer from root -> $ROOTLESS_USER (go env handled separetly) ROOTLESS_ENV_RE='(CIRRUS_.+)|(ROOTLESS_.+)|(.+_IMAGE.*)|(.+_BASE)|(.*DIRPATH)|(.*FILEPATH)|(SOURCE.*)|(DEPEND.*)|(.+_DEPS_.+)|(OS_REL.*)|(.+_ENV_RE)|(TRAVIS)|(CI.+)|(TEST_REMOTE.*)' @@ -74,9 +74,6 @@ SPECIALMODE="${SPECIALMODE:-none}" TEST_REMOTE_CLIENT="${TEST_REMOTE_CLIENT:-false}" export CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-podman} -# IN_PODMAN container image -IN_PODMAN_IMAGE="quay.io/libpod/in_podman:latest" - # When running as root, this may be empty or not, as a user, it MUST be set. if [[ "$USER" == "root" ]] then @@ -211,8 +208,25 @@ setup_rootless() { # Works with older versions of bash printf "${_env_var_name}=%q\n" "$(printenv $_env_var_name)" >> "/home/$ROOTLESS_USER/.bashrc" done - echo "Ensure the systems ssh process is up and running" - systemctl --wait restart sshd # a regular 'start' could hang forever + + echo "Ensure the systems ssh process is up and running within 5 minutes" + systemctl start sshd + NOW=$(date +%s) + TIMEOUT=$(date --date '+5 minutes' +%s) + while [[ "$(date +%s)" -lt "$TIMEOUT" ]] + do + if timeout --foreground -k 1s 1s \ + ssh $ROOTLESS_USER@localhost \ + -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o CheckHostIP=no \ + true + then + break + else + sleep 2s + fi + done + [[ "$(date +%s)" -lt "$TIMEOUT" ]] || \ + die 11 "Timeout exceeded waiting for localhost ssh capability" } # Helper/wrapper script to only show stderr/stdout on non-zero exit @@ -347,7 +361,7 @@ _finalize(){ set +e # make errors non-fatal echo "Removing leftover giblets from cloud-init" cd / - sudo rm -rf /var/lib/cloud/instance? + sudo rm -rf /var/lib/cloud/instanc* sudo rm -rf /root/.ssh/* sudo rm -rf /home/* sudo rm -rf /tmp/* diff --git a/contrib/cirrus/packer/cloud-init/fedora/cloud-init.service b/contrib/cirrus/packer/cloud-init/fedora/cloud-init.service new file mode 100644 index 000000000..4d2197d87 --- /dev/null +++ b/contrib/cirrus/packer/cloud-init/fedora/cloud-init.service @@ -0,0 +1,20 @@ +[Unit] +Description=Initial cloud-init job (metadata service crawler) +DefaultDependencies=no +Wants=cloud-init-local.service +After=cloud-init-local.service +Wants=google-network-daemon.service +After=google-network-daemon.service +Before=systemd-user-sessions.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/cloud-init init +RemainAfterExit=yes +TimeoutSec=0 + +# Output needs to appear in instance console output +StandardOutput=journal+console + +[Install] +WantedBy=cloud-init.target diff --git a/contrib/cirrus/packer/fedora_base-setup.sh b/contrib/cirrus/packer/fedora_base-setup.sh index 2e6d3eceb..a425b2b57 100644 --- a/contrib/cirrus/packer/fedora_base-setup.sh +++ b/contrib/cirrus/packer/fedora_base-setup.sh @@ -16,11 +16,17 @@ echo "Updating packages" ooe.sh dnf -y update echo "Installing necessary packages and google services" -ooe.sh dnf -y install rng-tools google-compute-engine-tools google-compute-engine-oslogin +ooe.sh dnf -y install rng-tools google-compute-engine-tools google-compute-engine-oslogin ethtool echo "Enabling services" ooe.sh systemctl enable rngd +# There is a race that can happen on boot between the GCE services configuring +# the VM, and cloud-init trying to do similar activities. Use a customized +# unit file to make sure cloud-init starts after the google-compute-* services. +echo "Setting cloud-init service to start after google-network-daemon.service" +cp -v $GOSRC/$PACKER_BASE/cloud-init/fedora/cloud-init.service /etc/systemd/system/ + rh_finalize echo "SUCCESS!" diff --git a/contrib/cirrus/packer/libpod_base_images.yml b/contrib/cirrus/packer/libpod_base_images.yml index 560cb321c..e519d2fba 100644 --- a/contrib/cirrus/packer/libpod_base_images.yml +++ b/contrib/cirrus/packer/libpod_base_images.yml @@ -78,7 +78,7 @@ builders: ssh_username: 'root' - <<: *nested_virt - name: 'prior-fedora' + name: 'prior_fedora' iso_url: '{{user `PRIOR_FEDORA_IMAGE_URL`}}' iso_checksum_url: '{{user `PRIOR_FEDORA_CSUM_URL`}}' @@ -121,7 +121,7 @@ provisioners: post-processors: - - type: "compress" - only: ['fedora', 'prior-fedora'] + only: ['fedora', 'prior_fedora'] output: '/tmp/{{build_name}}/disk.raw.tar.gz' format: '.tar.gz' compression_level: 9 @@ -136,7 +136,7 @@ post-processors: image_description: 'Based on {{user `FEDORA_IMAGE_URL`}}' image_family: '{{user `FEDORA_BASE_IMAGE_NAME`}}' - <<: *gcp_import - only: ['prior-fedora'] + only: ['prior_fedora'] image_name: "{{user `PRIOR_FEDORA_BASE_IMAGE_NAME`}}-{{user `TIMESTAMP`}}" image_description: 'Based on {{user `PRIOR_FEDORA_IMAGE_URL`}}' image_family: '{{user `PRIOR_FEDORA_BASE_IMAGE_NAME`}}' diff --git a/contrib/cirrus/packer/libpod_images.yml b/contrib/cirrus/packer/libpod_images.yml index 34d4db7fb..c25da25ac 100644 --- a/contrib/cirrus/packer/libpod_images.yml +++ b/contrib/cirrus/packer/libpod_images.yml @@ -55,11 +55,11 @@ builders: # v----- is a YAML alias, allows partial re-use of the anchor object - <<: *gce_hosted_image - name: 'fedora-29' + name: 'fedora-30' source_image: '{{user `FEDORA_BASE_IMAGE`}}' - <<: *gce_hosted_image - name: 'fedora-28' + name: 'fedora-29' source_image: '{{user `PRIOR_FEDORA_BASE_IMAGE`}}' # The brains of the operation, making actual modifications to the base-image. diff --git a/contrib/cirrus/setup_environment.sh b/contrib/cirrus/setup_environment.sh index 13bce506a..8fdcf5897 100755 --- a/contrib/cirrus/setup_environment.sh +++ b/contrib/cirrus/setup_environment.sh @@ -33,20 +33,8 @@ done # (see docs). case "${OS_REL_VER}" in ubuntu-18) ;; - fedora-29) - # Occasionally, and seemingly only on F29 the root disk fails to expand - # upon boot. When this happens, any number of failures could occur if - # space runs out. Until there is time to investigate the actual cause, - # workaround this problem by detecting it and acting accordingly. - REMAINING=$(df /dev/sda1 | tail -1 | awk '{print $4}') - if [[ "$REMAINING" -lt "100000000" ]] # .cirrus.yml specifies 200gig - then - echo "Fixing failure to expand root filesystem" - growpart /dev/sda 1 # device guaranteed by cloud provider - resize2fs /dev/sda1 # growpart & resuze guaranteed by base-image - fi - ;; - fedora-28) ;; + fedora-30) ;; + fedora-29) ;; centos-7) # Current VM is an image-builder-image no local podman/testing echo "No further setup required for VM image building" exit 0 diff --git a/contrib/gate/Dockerfile b/contrib/gate/Dockerfile index 630371c76..c886fc9aa 100644 --- a/contrib/gate/Dockerfile +++ b/contrib/gate/Dockerfile @@ -1,18 +1,15 @@ -FROM fedora:29 +FROM fedora:30 RUN dnf -y install \ atomic-registries \ btrfs-progs-devel \ bzip2 \ - conmon \ container-selinux \ containernetworking-cni \ - containernetworking-cni-devel \ device-mapper-devel \ findutils \ git \ glib2-devel \ glibc-static \ - gnupg \ golang \ gpgme-devel \ iptables \ diff --git a/contrib/spec/podman.spec.in b/contrib/spec/podman.spec.in index d0ad07044..68d02325a 100644 --- a/contrib/spec/podman.spec.in +++ b/contrib/spec/podman.spec.in @@ -39,7 +39,7 @@ %global shortcommit_conmon %(c=%{commit_conmon}; echo ${c:0:7}) Name: podman -Version: 1.4.2 +Version: 1.4.3 Release: #COMMITDATE#.git%{shortcommit0}%{?dist} Summary: Manage Pods, Containers and Container Images License: ASL 2.0 diff --git a/hack/get_ci_vm.sh b/hack/get_ci_vm.sh index 12dd211f4..90e3aea8e 100755 --- a/hack/get_ci_vm.sh +++ b/hack/get_ci_vm.sh @@ -168,7 +168,7 @@ parse_args(){ if echo "$IMAGE_NAME" | grep -q "image-builder-image" then echo -e "Creating an image-builder VM, I hope you know what you're doing.\n" - IBI_ARGS="--scopes=compute-rw,storage-rw,userinfo-email \"--min-cpu-platform=Intel Haswell\"" + IBI_ARGS="--scopes=compute-rw,storage-rw,userinfo-email" SSHUSER="centos" else unset IBI_ARGS diff --git a/libpod/container_inspect.go b/libpod/container_inspect.go index 0a62ceb7c..752823634 100644 --- a/libpod/container_inspect.go +++ b/libpod/container_inspect.go @@ -1,8 +1,10 @@ package libpod import ( + "strings" "time" + "github.com/containers/image/manifest" "github.com/containers/libpod/libpod/driver" "github.com/cri-o/ocicni/pkg/ocicni" spec "github.com/opencontainers/runtime-spec/specs-go" @@ -49,6 +51,53 @@ type InspectContainerData struct { ExitCommand []string `json:"ExitCommand"` Namespace string `json:"Namespace"` IsInfra bool `json:"IsInfra"` + Config *InspectContainerConfig `json:"Config"` +} + +// InspectContainerConfig holds further data about how a container was initially +// configured. +type InspectContainerConfig struct { + // Container hostname + Hostname string `json:"Hostname"` + // Container domain name - unused at present + DomainName string `json:"Domainname"` + // User the container was launched with + User string `json:"User"` + // Unused, at present + AttachStdin bool `json:"AttachStdin"` + // Unused, at present + AttachStdout bool `json:"AttachStdout"` + // Unused, at present + AttachStderr bool `json:"AttachStderr"` + // Whether the container creates a TTY + Tty bool `json:"Tty"` + // Whether the container leaves STDIN open + OpenStdin bool `json:"OpenStdin"` + // Whether STDIN is only left open once. + // Presently not supported by Podman, unused. + StdinOnce bool `json:"StdinOnce"` + // Container environment variables + Env []string `json:"Env"` + // Container command + Cmd []string `json:"Cmd"` + // Container image + Image string `json:"Image"` + // Unused, at present. I've never seen this field populated. + Volumes map[string]struct{} `json:"Volumes"` + // Container working directory + WorkingDir string `json:"WorkingDir"` + // Container entrypoint + Entrypoint string `json:"Entrypoint"` + // On-build arguments - presently unused. More of Buildah's domain. + OnBuild *string `json:"OnBuild"` + // Container labels + Labels map[string]string `json:"Labels"` + // Container annotations + Annotations map[string]string `json:"Annotations"` + // Container stop signal + StopSignal uint `json:"StopSignal"` + // Configured healthcheck for the container + Healthcheck *manifest.Schema2HealthConfig `json:"Healthcheck,omitempty"` } // InspectMount provides a record of a single mount in a container. It contains @@ -192,7 +241,7 @@ func (c *Container) getContainerInspectData(size bool, driverData *driver.Data) } } - mounts, err := c.getInspectMounts() + mounts, err := c.getInspectMounts(spec) if err != nil { return nil, err } @@ -284,6 +333,12 @@ func (c *Container) getContainerInspectData(size bool, driverData *driver.Data) // Get information on the container's network namespace (if present) data = c.getContainerNetworkInfo(data) + inspectConfig, err := c.generateInspectContainerConfig(spec) + if err != nil { + return nil, err + } + data.Config = inspectConfig + if size { rootFsSize, err := c.rootFsSize() if err != nil { @@ -302,7 +357,7 @@ func (c *Container) getContainerInspectData(size bool, driverData *driver.Data) // Get inspect-formatted mounts list. // Only includes user-specified mounts. Only includes bind mounts and named // volumes, not tmpfs volumes. -func (c *Container) getInspectMounts() ([]*InspectMount, error) { +func (c *Container) getInspectMounts(ctrSpec *spec.Spec) ([]*InspectMount, error) { inspectMounts := []*InspectMount{} // No mounts, return early @@ -319,7 +374,7 @@ func (c *Container) getInspectMounts() ([]*InspectMount, error) { for _, namedVol := range c.config.NamedVolumes { namedVolumes[namedVol.Dest] = namedVol } - for _, mount := range c.config.Spec.Mounts { + for _, mount := range ctrSpec.Mounts { mounts[mount.Destination] = mount } @@ -401,3 +456,56 @@ func parseMountOptionsForInspect(options []string, mount *InspectMount) { mount.Mode = zZ mount.Options = otherOpts } + +// Generate the InspectContainerConfig struct for the Config field of Inspect. +func (c *Container) generateInspectContainerConfig(spec *spec.Spec) (*InspectContainerConfig, error) { + ctrConfig := new(InspectContainerConfig) + + ctrConfig.Hostname = c.Hostname() + ctrConfig.User = c.config.User + if spec.Process != nil { + ctrConfig.Tty = spec.Process.Terminal + ctrConfig.Env = []string{} + for _, val := range spec.Process.Env { + ctrConfig.Env = append(ctrConfig.Env, val) + } + ctrConfig.WorkingDir = spec.Process.Cwd + } + + ctrConfig.OpenStdin = c.config.Stdin + ctrConfig.Image = c.config.RootfsImageName + + // Leave empty is not explicitly overwritten by user + if len(c.config.Command) != 0 { + ctrConfig.Cmd = []string{} + for _, val := range c.config.Command { + ctrConfig.Cmd = append(ctrConfig.Cmd, val) + } + } + + // Leave empty if not explicitly overwritten by user + if len(c.config.Entrypoint) != 0 { + ctrConfig.Entrypoint = strings.Join(c.config.Entrypoint, " ") + } + + if len(c.config.Labels) != 0 { + ctrConfig.Labels = make(map[string]string) + for k, v := range c.config.Labels { + ctrConfig.Labels[k] = v + } + } + + if len(spec.Annotations) != 0 { + ctrConfig.Annotations = make(map[string]string) + for k, v := range spec.Annotations { + ctrConfig.Annotations[k] = v + } + } + + ctrConfig.StopSignal = c.config.StopSignal + // TODO: should JSON deep copy this to ensure internal pointers don't + // leak. + ctrConfig.Healthcheck = c.config.HealthCheckConfig + + return ctrConfig, nil +} diff --git a/logo/podman-logo-source.svg b/logo/podman-logo-source.svg new file mode 100644 index 000000000..9e5cc6625 --- /dev/null +++ b/logo/podman-logo-source.svg @@ -0,0 +1,531 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + id="svg8" + version="1.1" + viewBox="0 0 228.25899 61.226642" + height="231.40778" + width="862.71112"> + <defs + id="defs2"> + <marker + style="overflow:visible" + id="marker5584" + refX="0" + refY="0" + orient="auto"> + <path + transform="scale(0.2)" + style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 Z" + id="path5582" /> + </marker> + <marker + style="overflow:visible" + id="DiamondS" + refX="0" + refY="0" + orient="auto"> + <path + transform="scale(0.2)" + style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.00000003pt;stroke-opacity:1" + d="M 0,-7.0710768 -7.0710894,0 0,7.0710589 7.0710462,0 Z" + id="path5359" /> + </marker> + <marker + style="overflow:visible" + id="DotL" + refX="0" + refY="0" + orient="auto"> + <path + transform="matrix(0.8,0,0,0.8,5.92,0.8)" + style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#4d4d4d;stroke-width:1.00000003pt;stroke-opacity:1" + d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z" + id="path5335" /> + </marker> + <clipPath + id="clipPath81511" + clipPathUnits="userSpaceOnUse"> + <rect + y="-1.4835175" + x="934.65692" + height="12.832292" + width="26.19375" + id="rect81513" + style="opacity:1;fill:#e7e8e9;fill-opacity:1;stroke:#a7a9ac;stroke-width:0.52916664;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" /> + </clipPath> + </defs> + <metadata + id="metadata5"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + transform="translate(-1170.4453,517.6202)" + id="layer1"> + <g + id="g163426" /> + <g + id="g10819" + transform="translate(0,-285.75012)"> + <g + id="text10671" + style="font-style:normal;font-weight:normal;font-size:37.59195328px;line-height:22.55517006px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#892ca0;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + aria-label="podman"> + <path + id="path80700" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:Montserrat;fill:#892ca0;fill-opacity:1;stroke-width:0.26458332px" + d="m 1249.8778,-209.9329 c -3.1202,0 -5.526,1.27812 -6.9921,3.60883 v -3.45846 h -4.3231 v 27.29175 h 4.3231 v -10.75129 c 1.4661,2.3307 3.8719,3.60882 7.0673,3.60882 5.7139,0 9.4731,-4.09752 9.4731,-10.07464 0,-6.0899 -3.8719,-10.22501 -9.5483,-10.22501 z m -0.9022,16.61564 c -3.5713,0 -6.0899,-2.66903 -6.0899,-6.541 0,-3.75919 2.5186,-6.46581 6.0899,-6.46581 3.5712,0 6.0899,2.74421 6.0899,6.46581 0,3.83438 -2.5187,6.541 -6.0899,6.541 z" /> + <path + id="path80702" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:Montserrat;fill:#892ca0;fill-opacity:1;stroke-width:0.26458332px" + d="m 1272.4964,-209.9329 c -6.2027,0 -10.4506,4.09752 -10.4506,10.14983 0,6.01471 4.2479,10.14982 10.4506,10.14982 6.1651,0 10.413,-4.13511 10.413,-10.14982 0,-6.05231 -4.2479,-10.14983 -10.413,-10.14983 z m 0,3.7216 c 3.5712,0 6.0899,2.63144 6.0899,6.46582 0,3.87197 -2.5187,6.50341 -6.0899,6.50341 -3.6088,0 -6.1275,-2.63144 -6.1275,-6.50341 0,-3.83438 2.5187,-6.46582 6.1275,-6.46582 z" /> + <path + id="path80704" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:Montserrat;fill:#892ca0;fill-opacity:1;stroke-width:0.26458332px" + d="m 1302.1564,-217.67684 v 11.35277 c -1.466,-2.33071 -3.8719,-3.64642 -7.1048,-3.64642 -5.6388,0 -9.5108,4.09752 -9.5108,10.11223 0,6.0899 3.8344,10.2626 9.5859,10.2626 3.1954,0 5.6012,-1.27812 7.0297,-3.60882 v 3.42086 h 4.3231 v -27.89322 z m -6.1275,24.47236 c -3.6464,0 -6.1274,-2.70662 -6.165,-6.50341 0.038,-3.83438 2.5562,-6.57859 6.165,-6.57859 3.6089,0 6.1275,2.70662 6.1275,6.57859 0,3.79679 -2.5186,6.50341 -6.1275,6.50341 z" /> + <path + id="path80706" + style="fill:#60605b" + d="m 1339.1334,-209.9329 c -3.6464,0 -6.3154,1.46608 -7.5936,4.81177 -0.9398,-3.04495 -3.3832,-4.81177 -6.9545,-4.81177 -3.3081,0 -5.8643,1.20294 -7.2552,4.02234 v -3.87197 h -4.2855 v 19.99891 h 4.2855 v -9.88668 c 0,-3.49605 2.1051,-6.12749 5.5636,-6.24026 2.9322,0 4.699,1.842 4.699,4.88695 v 11.23999 h 4.3231 v -9.88668 c 0,-3.49605 2.0675,-6.12749 5.4884,-6.24026 2.9321,0 4.7366,1.842 4.7366,4.88695 v 11.23999 h 4.323 v -12.44293 c 0,-4.77418 -2.7442,-7.70635 -7.3304,-7.70635 z" /> + <path + id="path80708" + style="fill:#60605b" + d="m 1368.4916,-189.78362 -0.038,-13.11959 c -0.038,-4.39826 -2.9322,-7.02969 -8.0823,-7.02969 -3.7968,0 -5.8268,0.86461 -8.6086,2.51866 l 1.7669,3.00736 c 1.9923,-1.35332 3.9847,-2.02997 5.9019,-2.02997 3.1577,0 4.7742,1.50368 4.7742,4.02234 v 0.60147 h -6.0523 c -4.8118,0.0376 -7.556,2.36829 -7.556,6.01471 0,3.53365 2.7066,6.20267 7.0297,6.20267 2.8946,0 5.1877,-0.86461 6.6162,-2.63143 v 2.44347 z m -9.9619,-3.2329 c -2.4059,0 -3.872,-1.16535 -3.872,-2.96977 0,-1.91719 1.3157,-2.66903 4.1351,-2.66903 h 5.4133 v 1.84201 c -0.2256,2.18033 -2.5939,3.79679 -5.6764,3.79679 z" /> + <path + id="path80710" + style="fill:#60605b" + d="m 1385.9695,-209.9329 c -3.3833,0 -5.9396,1.20294 -7.3681,3.98474 v -3.83437 h -4.323 v 19.99891 h 4.323 v -10.63852 c 0.3008,-3.12013 2.3683,-5.41324 5.6764,-5.45083 3.0074,0 4.8118,1.842 4.8118,4.84936 v 11.23999 h 4.3231 v -12.44293 c 0,-4.77418 -2.7818,-7.70635 -7.4432,-7.70635 z" /> + </g> + </g> + <g + id="g10987" + transform="translate(-4.0076941e-7,-285.75012)"> + <g + id="g10985" + transform="translate(238.41304,-199.74894)"> + <path + style="fill:none;fill-rule:evenodd;stroke:#3c6eb4;stroke-width:1.05833328;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 963.98321,-1.2653795 h 12.72207" + id="path10821" /> + <path + id="path10823" + d="m 966.09989,1.3804536 h 12.72207" + style="fill:none;fill-rule:evenodd;stroke:#3c6eb4;stroke-width:1.05833328;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <g + style="stroke-width:0.86916679" + transform="matrix(1.1500458,0,0,1.1510087,-143.9252,0.43908228)" + id="g10875"> + <path + id="path10825" + d="m 973.10356,3.3983398 c -2.30839,-3.74257021 -1.79145,-7.3525044 -2.88299,-12.510239 -0.59897,-3.1855248 -2.62142,-5.8149598 -5.25403,-6.7776908 -2.17189,-0.757647 -6.68263,-0.759955 -8.59472,0 -2.63261,0.962731 -4.65498,3.592166 -5.25395,6.7776908 -1.09155,5.1577346 -0.57458,8.76766879 -2.88297,12.510239" + style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.68990111;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <ellipse + style="opacity:1;fill:#e7e8e9;fill-opacity:1;stroke:none;stroke-width:0.68990111;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" + id="ellipse10827" + cx="966.56354" + cy="-4.1070371" + rx="1.1158856" + ry="1.1746163" /> + <ellipse + ry="1.1746163" + rx="1.1158856" + cy="-4.1070371" + cx="955.28723" + id="ellipse10829" + style="opacity:1;fill:#e7e8e9;fill-opacity:1;stroke:none;stroke-width:0.68990111;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" /> + <g + id="g10839" + style="stroke:#a7a9ac;stroke-width:0.51800275;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(0.88789899,0,0,0.88789899,108.02196,0.55783395)"> + <path + id="path10831" + d="m 956.41893,-5.9814347 -4.67056,1.2514712" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.51800275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path10833" + d="m 956.9481,-5.2538306 -4.6966,2.711577" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.51800275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path10835" + d="m 957.34497,-4.3939348 -4.7625,4.76249998" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.51800275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path10837" + d="m 957.5434,-3.2694556 -2.434,4.21584432" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.51800275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + transform="matrix(-0.88789899,0,0,0.88789899,1814.1581,0.55783389)" + style="stroke:#a7a9ac;stroke-width:0.51800275;stroke-miterlimit:4;stroke-dasharray:none" + id="g10849"> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.51800275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 956.41893,-5.9814347 -4.67056,1.2514712" + id="path10841" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.51800275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 956.9481,-5.2538306 -4.6966,2.711577" + id="path10843" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.51800275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 957.34497,-4.3939348 -4.7625,4.76249998" + id="path10845" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.51800275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 957.5434,-3.2694556 -2.434,4.21584432" + id="path10847" /> + </g> + <ellipse + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#60605b;stroke-width:0.68990111;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" + id="ellipse10851" + cx="961.04285" + cy="-4.9292688" + rx="3.5825801" + ry="3.4063873" /> + <ellipse + transform="scale(-1,1)" + style="fill:#000000;fill-opacity:1;stroke:#892ca0;stroke-width:0.68990111;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="ellipse10853" + cx="-966.52734" + cy="-7.8406329" + rx="1.7252614" + ry="1.7690334" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.68990105;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 968.07427,-11.544209 c -0.34474,-0.448317 -0.89334,-0.733231 -1.45836,-0.757402 -0.53344,-0.02282 -1.07281,0.185834 -1.45201,0.561706" + id="path10855" /> + <g + id="g10863" + style="stroke-width:0.77700406;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(0.88789899,0,0,0.88789899,106.61242,0.08798743)"> + <g + id="g10861" + transform="translate(0,-0.52916667)" + style="stroke-width:0.77700406"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.77700406;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 962.30591,-5.7829972 0.0993,1.9843749 c 0,0 1.58751,1.4221355 2.51355,-0.033073 0,0 -0.0993,-0.8268214 -0.16541,-1.0914047" + id="path10857" /> + <path + id="path10859" + d="m 962.28751,-5.7829972 -0.0993,1.9843749 c 0,0 -1.58751,1.4221355 -2.51355,-0.033073 0,0 0.0993,-0.8268214 0.16541,-1.0914047" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.77700406;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + </g> + <path + id="path10865" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.68990111;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 962.57174,-5.5436767 c -0.1202,-0.3110186 -0.1202,-0.9330691 -0.48062,-0.9330691 -0.36047,0 -0.69372,-0.2332673 -1.04826,-0.2332673 -0.35456,0 -0.68781,0.2332673 -1.04828,0.2332673 -0.36046,0 -0.36046,0.6220505 -0.48061,0.9330691 -0.1202,0.3110253 1.52889,1.3218472 1.52889,1.3218472 0,0 1.64903,-1.0108219 1.52888,-1.3218472 z" /> + <ellipse + ry="1.7690334" + rx="1.7252614" + cy="-7.8406329" + cx="955.36047" + id="ellipse10867" + style="fill:#000000;fill-opacity:1;stroke:#892ca0;stroke-width:0.68990111;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <ellipse + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.68990111;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="ellipse10869" + cx="954.78467" + cy="-8.3384542" + rx="0.8483994" + ry="0.88143349" /> + <path + id="path10871" + d="m 953.81353,-11.544209 c 0.34474,-0.448315 0.89333,-0.73323 1.45835,-0.757402 0.53344,-0.02282 1.07281,0.185833 1.45201,0.561706" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.68990105;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <ellipse + ry="0.88143349" + rx="0.8483994" + cy="-8.3384542" + cx="967.05286" + id="ellipse10873" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.68990111;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <path + id="path10877" + d="m 948.21183,4.2931494 h 32.92765" + style="fill:none;fill-rule:evenodd;stroke:#3c6eb4;stroke-width:1.05833328;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <g + style="stroke-width:1.20411575" + transform="matrix(0.83048493,0,0,0.83048493,164.55035,-1.4237955)" + clip-path="url(#clipPath81511)" + id="g10929"> + <path + id="path10879" + d="m 958.31594,13.737399 c -0.26199,-1.782196 -0.38924,-3.720848 -0.8727,-6.0017375 -0.53058,-2.8174518 -2.32212,-5.1430676 -4.65415,-5.9945597 -1.92393,-0.6701043 -5.91966,-0.6721461 -7.61343,0 -2.33204,0.8514921 -4.1235,3.1771079 -4.65409,5.9945597 -0.48346,2.2808895 -0.61071,4.2195415 -0.87269,6.0017375" + style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.95576686;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <ellipse + style="opacity:1;fill:#e7e8e9;fill-opacity:1;stroke:none;stroke-width:0.95576686;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" + id="ellipse10881" + cx="954.20367" + cy="12.16224" + rx="0.98848081" + ry="1.0388949" /> + <ellipse + ry="1.0388949" + rx="0.98848081" + cy="12.16224" + cx="944.21478" + id="ellipse10883" + style="opacity:1;fill:#e7e8e9;fill-opacity:1;stroke:none;stroke-width:0.95576686;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" /> + <g + id="g10893" + style="stroke:#a7a9ac;stroke-width:0.81074655;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(0.7865243,0,0,0.7853064,193.68501,16.288101)"> + <path + id="path10885" + d="m 956.41893,-5.9814347 -4.67056,1.2514712" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.81074655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path10887" + d="m 956.9481,-5.2538306 -4.6966,2.711577" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.81074655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path10889" + d="m 957.34497,-4.3939348 -4.7625,4.76249998" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.81074655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path10891" + d="m 957.5434,-3.2694556 -2.434,4.21584432" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.81074655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <g + transform="matrix(-0.7865243,0,0,0.7853064,1705.0252,16.288101)" + style="stroke:#a7a9ac;stroke-width:0.81074655;stroke-miterlimit:4;stroke-dasharray:none" + id="g10903"> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.81074655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 956.41893,-5.9814347 -4.67056,1.2514712" + id="path10895" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.81074655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 956.9481,-5.2538306 -4.6966,2.711577" + id="path10897" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.81074655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 957.34497,-4.3939348 -4.7625,4.76249998" + id="path10899" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.81074655;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 957.5434,-3.2694556 -2.434,4.21584432" + id="path10901" /> + </g> + <ellipse + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#60605b;stroke-width:0.95576686;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" + id="ellipse10905" + cx="949.31329" + cy="11.435012" + rx="3.1735437" + ry="3.0127952" /> + <ellipse + transform="scale(-1,1)" + style="fill:#000000;fill-opacity:1;stroke:#892ca0;stroke-width:0.95576686;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="ellipse10907" + cx="-954.17163" + cy="8.8600426" + rx="1.528282" + ry="1.5646298" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.9557668;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 955.54199,5.5843938 c -0.30575,-0.3965787 -0.79155,-0.6484892 -1.29185,-0.6698876 -0.4724,-0.020205 -0.95006,0.1642901 -1.28623,0.4968037" + id="path10909" /> + <g + id="g10917" + style="stroke-width:1.21611977;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(0.7865243,0,0,0.7853064,192.4364,15.872544)"> + <g + style="stroke-width:1.21611977" + id="g10915" + transform="translate(0,-0.52916667)"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.21611977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 962.30591,-5.7829972 0.0993,1.9843749 c 0,0 1.58751,1.4221355 2.51355,-0.033073 0,0 -0.0993,-0.8268214 -0.16541,-1.0914047" + id="path10911" /> + <path + id="path10913" + d="m 962.28751,-5.7829972 -0.0993,1.9843749 c 0,0 -1.58751,1.4221355 -2.51355,-0.033073 0,0 0.0993,-0.8268214 0.16541,-1.0914047" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.21611977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + </g> + <path + id="path10919" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.95576686;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 950.66771,10.891591 c -0.10648,-0.275082 -0.10648,-0.825257 -0.42575,-0.825257 -0.31931,0 -0.61451,-0.2063147 -0.92858,-0.2063147 -0.31407,0 -0.60928,0.2063147 -0.92858,0.2063147 -0.31932,0 -0.31932,0.550175 -0.42575,0.825257 -0.10647,0.275088 1.35433,1.169114 1.35433,1.169114 0,0 1.46076,-0.894026 1.35433,-1.169114 z" /> + <ellipse + ry="1.5646298" + rx="1.528282" + cy="8.8600426" + cx="944.27972" + id="ellipse10921" + style="fill:#000000;fill-opacity:1;stroke:#892ca0;stroke-width:0.95576686;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <ellipse + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.95576686;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="ellipse10923" + cx="943.76965" + cy="8.4197426" + rx="0.75153452" + ry="0.77958798" /> + <path + id="path10925" + d="m 942.90945,5.5843938 c 0.30575,-0.3965787 0.79155,-0.6484892 1.29185,-0.6698876 0.4724,-0.020205 0.95006,0.1642901 1.28623,0.4968037" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.9557668;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <ellipse + ry="0.77958798" + rx="0.75153452" + cy="8.4197426" + cx="954.63715" + id="ellipse10927" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.95576686;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + </g> + <path + style="opacity:1;fill:none;fill-opacity:1;stroke:#892ca0;stroke-width:1.0583334;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 961.97165,23.28467 -19.29817,-9.23285 -4.82036,-20.8616002 13.2871,-16.7806158 21.38926,-0.06408 13.38485,16.7011458 -4.69887,20.8897002 z" + id="path10931" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#3c6eb4;stroke-width:1.05833328;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 943.44933,8.5264827 h 19.83144" + id="path10933" /> + <path + id="path10935" + d="m 952.87074,12.492952 h 27.50208" + style="fill:none;fill-rule:evenodd;stroke:#3c6eb4;stroke-width:1.05833328;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <g + transform="translate(0.78045403,0.88370984)" + id="g10979"> + <path + style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 977.46866,11.110796 c -0.23262,-1.5824091 -0.34561,-3.3037374 -0.77487,-5.3289381 -0.4711,-2.5016132 -2.06181,-4.566525 -4.13242,-5.32256411 -1.70825,-0.59498494 -5.25606,-0.59679785 -6.75995,0 -2.07062,0.75603911 -3.66125,2.82095091 -4.13236,5.32256411 -0.42927,2.0252007 -0.54225,3.746529 -0.77486,5.3289381" + id="path10937" /> + <ellipse + ry="0.92243373" + rx="0.87767112" + cy="9.7122078" + cx="973.81744" + id="ellipse10939" + style="opacity:1;fill:#e7e8e9;fill-opacity:1;stroke:none;stroke-width:0.79374999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" /> + <ellipse + style="opacity:1;fill:#e7e8e9;fill-opacity:1;stroke:none;stroke-width:0.79374999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" + id="ellipse10941" + cx="964.9483" + cy="9.7122078" + rx="0.87767112" + ry="0.92243373" /> + <g + transform="matrix(0.69835413,0,0,0.69727276,299.02348,11.966021)" + style="stroke:#a7a9ac;stroke-width:0.7583214;stroke-miterlimit:4;stroke-dasharray:none" + id="g10947"> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.7583214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 955.74614,-3.9599306 -4.67056,1.2514712" + id="path10943" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.7583214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 956.27531,-3.2323265 -4.6966,2.71157695" + id="path10945" /> + </g> + <g + id="g10953" + style="stroke:#a7a9ac;stroke-width:0.7583214;stroke-miterlimit:4;stroke-dasharray:none" + transform="matrix(-0.69835413,0,0,0.69727276,1640.4712,13.375562)"> + <path + id="path10949" + d="m 956.41893,-5.9814347 -4.67056,1.2514712" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.7583214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + id="path10951" + d="m 956.9481,-5.2538306 -4.6966,2.711577" + style="fill:none;fill-rule:evenodd;stroke:#a7a9ac;stroke-width:0.7583214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + <ellipse + ry="2.6750579" + rx="2.8177862" + cy="9.0665035" + cx="969.47528" + id="ellipse10955" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#60605b;stroke-width:0.79374999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:5.99999952;stroke-opacity:1" /> + <ellipse + ry="1.3892332" + rx="1.3569601" + cy="6.7801905" + cx="-973.789" + id="ellipse10957" + style="fill:#000000;fill-opacity:1;stroke:#892ca0;stroke-width:0.79374999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + transform="scale(-1,1)" /> + <path + id="path10959" + d="m 975.00567,3.8717489 c -0.27147,-0.3521218 -0.70281,-0.575793 -1.14703,-0.5947926 -0.41945,-0.01794 -0.84356,0.1458731 -1.14204,0.4411116" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.79374993;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <g + transform="matrix(0.69835413,0,0,0.69727276,297.44499,13.006589)" + style="stroke-width:1.13748205;stroke-miterlimit:4;stroke-dasharray:none" + id="g10967"> + <g + transform="translate(0,-0.52916667)" + id="g10965" + style="stroke-width:1.13748205"> + <path + id="path10961" + d="m 962.30591,-5.7829972 0.0993,1.9843749 c 0,0 1.58751,1.4221355 2.51355,-0.033073 0,0 -0.0993,-0.8268214 -0.16541,-1.0914047" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.13748205;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.13748205;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 962.28751,-5.7829972 -0.0993,1.9843749 c 0,0 -1.58751,1.4221355 -2.51355,-0.033073 0,0 0.0993,-0.8268214 0.16541,-1.0914047" + id="path10963" /> + </g> + </g> + <path + d="m 970.6778,8.5840058 c -0.0945,-0.2442451 -0.0945,-0.7327449 -0.37802,-0.7327449 -0.28351,0 -0.54562,-0.1831865 -0.82448,-0.1831865 -0.27887,0 -0.54098,0.1831865 -0.82449,0.1831865 -0.28352,0 -0.28352,0.4884998 -0.37802,0.7327449 -0.0945,0.2442506 1.20251,1.0380563 1.20251,1.0380563 0,0 1.297,-0.7938057 1.2025,-1.0380563 z" + style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:0.79374999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path10969" /> + <ellipse + style="fill:#000000;fill-opacity:1;stroke:#892ca0;stroke-width:0.79374999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="ellipse10971" + cx="965.00598" + cy="6.7801905" + rx="1.3569601" + ry="1.3892332" /> + <ellipse + ry="0.69219536" + rx="0.66728675" + cy="6.3892479" + cx="964.5531" + id="ellipse10973" + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.79374999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.79374993;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 963.78925,3.8717489 c 0.27148,-0.3521208 0.70281,-0.5757916 1.14703,-0.5947926 0.41945,-0.017942 0.84357,0.1458717 1.14205,0.4411116" + id="path10975" /> + <ellipse + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.79374999;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="ellipse10977" + cx="974.20233" + cy="6.3892479" + rx="0.66728675" + ry="0.69219536" /> + </g> + <path + style="fill:none;fill-rule:evenodd;stroke:#3c6eb4;stroke-width:1.05833328;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 950.75405,15.138787 h 12.72207" + id="path10981" /> + <path + id="path10983" + d="m 958.16237,17.784622 h 10.477" + style="fill:none;fill-rule:evenodd;stroke:#3c6eb4;stroke-width:1.05833328;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + </g> + </g> + </g> +</svg> diff --git a/logo/podman-logo.png b/logo/podman-logo.png Binary files differindex b0dcc75d2..70c8b1191 100644 --- a/logo/podman-logo.png +++ b/logo/podman-logo.png diff --git a/logo/podman-logo.svg b/logo/podman-logo.svg deleted file mode 100644 index b7e008350..000000000 --- a/logo/podman-logo.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="3.68 3.68 848.64 213.64"><title>Podman logo</title><defs><style>.cls-1{isolation:isolate}.cls-2{fill:#892ca0}.cls-3{fill:#fff}.cls-4{opacity:.95294}.cls-5{fill:#ccc}.cls-6{fill:#3c6eb4}.cls-7{fill:#d7d8da}.cls-8{fill:#f1f1f1}.cls-9{fill:#60605b}.cls-10{fill:gray}</style></defs><g class="cls-1"><path d="M335.98 112.339c0 22.163-14.492 37.65-35.661 37.65-13.355 0-23.585-6.11-29.126-16.481v43.617h-11.081V74.689h11.081v16.197c5.541-10.514 15.77-16.623 28.842-16.623 21.17 0 35.944 15.628 35.944 38.076zm-11.224-.284c0-16.055-11.082-27.847-26.71-27.847-15.77 0-26.853 11.65-26.853 27.847 0 16.339 11.082 27.846 26.853 27.846 15.628 0 26.71-11.649 26.71-27.846zm99.028 0c0 22.447-15.77 37.933-37.933 37.933-22.164 0-37.935-15.486-37.935-37.933 0-22.306 15.77-37.65 37.935-37.65 22.163 0 37.933 15.344 37.933 37.65zm-64.786.142c0 16.48 11.224 27.846 26.853 27.846 15.628 0 26.851-11.365 26.851-27.846 0-16.339-11.223-27.705-26.851-27.705-15.63 0-26.853 11.366-26.853 27.705zm153.017 37.366h-11.081v-16.055c-5.541 10.513-15.77 16.623-29.126 16.623-21.311 0-36.087-15.77-36.087-38.076 0-22.448 14.776-37.934 35.945-37.934 13.354 0 23.727 6.109 29.268 16.765V44.143h11.08zm-11.081-37.224c0-16.339-11.225-28.131-26.995-28.131-15.913 0-27.136 11.792-27.136 28.13 0 16.197 11.223 27.848 27.136 27.848 15.77 0 26.995-11.65 26.995-27.847z" class="cls-2"/></g><path d="M661.05 103.388v46.174h-11.08v-43.19c0-13.355-7.815-21.17-20.743-21.17-15.486.427-24.437 11.509-24.437 27.564v36.796h-11.224v-43.19c0-13.355-7.671-21.17-20.743-21.17-15.343.427-24.579 11.509-24.579 27.564v36.796h-10.94V74.69h10.94v16.907c4.973-11.65 15.06-17.19 28.558-17.333 14.065 0 23.726 7.246 26.851 19.606 4.689-13.213 15.202-19.464 29.552-19.606 17.476 0 27.847 11.082 27.847 29.125zm71.042 34.667c-5.967 8.097-15.486 12.076-27.42 12.076-15.486 0-25.432-9.945-25.432-22.874 0-13.071 10.372-21.311 27.99-21.453h24.578v-4.405c0-10.94-6.82-17.475-20.033-17.475-8.24 0-15.912 3.126-23.726 8.525l-4.689-8.099c9.661-6.393 17.76-10.087 30.546-10.087 18.47 0 28.7 9.803 28.842 25.858l.142 49.442h-10.798zm-.142-14.35v-8.951h-23.3c-12.503 0-19.038 3.836-19.038 12.076s6.677 13.64 17.19 13.64c12.645 0 22.306-6.394 25.148-16.765zm104.143-20.317v46.174h-11.081v-43.19c0-13.213-7.956-21.027-21.17-21.027-14.776.142-23.868 9.803-25.147 24.01v40.207h-11.082V74.69h11.082v16.48c5.257-11.366 15.344-16.765 28.984-16.907 17.901 0 28.414 11.082 28.414 29.125z" class=""/><g id="path194076"><path d="M113.156 199.408L40.22 164.512 22 85.665l50.22-63.423L153.06 22l50.589 63.122-17.76 78.953z" class="cls-3"/><path d="M113.156 201.408a1.997 1.997 0 0 1-.863-.196l-72.938-34.897a1.999 1.999 0 0 1-1.085-1.353L20.05 86.115a2.001 2.001 0 0 1 .382-1.692L70.65 21a2.001 2.001 0 0 1 1.562-.758L153.054 20a2.01 2.01 0 0 1 1.567.749l50.588 63.122a2.001 2.001 0 0 1 .39 1.69l-17.76 78.953a1.999 1.999 0 0 1-1.076 1.36l-72.733 35.333a2.004 2.004 0 0 1-.874.201zm-71.205-38.285l71.198 34.065 71-34.49 17.337-77.076-49.384-61.62-78.914.237-49.023 61.913z" class="cls-2"/></g><g id="path194078" class="cls-4"><path d="M76.507 28.331h1v11.096h-1z" class="cls-5" transform="rotate(-30.828 77.007 33.879)"/></g><g id="path194080" class="cls-4"><path d="M141.453 32.365h11.095v1h-11.095z" class="cls-5" transform="rotate(-60.831 147.001 32.865)"/></g><g id="g194084"><g id="path194082" class="cls-4"><path d="M188.65 88.835h11.095v1H188.65z" class="cls-5" transform="rotate(-13.263 194.198 89.335)"/></g></g><g id="g194088"><g id="path194086" class="cls-4"><path d="M32.412 83.786h1v11.095h-1z" class="cls-5" transform="rotate(-76.714 32.912 89.334)"/></g></g><path d="M161.725 118.099l-.007-2a67.05 67.05 0 0 0 16.733-1.84l.457 1.948a68.793 68.793 0 0 1-17.183 1.892z" class="cls-6" id="path194090"/><g id="path194092"><path d="M111.906 39.964a40.262 40.262 0 0 0-40.275 40.25c0 19.749.548 38.287-13.729 40.586 7.82 6.16 109.842 5.203 109.842.232-13.895-1.443-13.848-17.782-14.705-40.415-.858-22.632-18.89-40.653-41.133-40.653z" class="cls-7"/><path d="M112.618 126.048c-25.659 0-51.36-1.331-55.334-4.462a1 1 0 0 1 .46-1.773c12.923-2.082 12.907-18.488 12.888-37.486l-.001-2.114a41.309 41.309 0 0 1 41.275-41.249c22.74 0 41.247 18.28 42.132 41.615l.11 2.985c.775 21.187 1.287 35.184 13.699 36.472a1 1 0 0 1 .897.995c0 .653-.424 1.189-1.26 1.594-4.394 2.133-29.61 3.423-54.866 3.423zm-51.562-5.028c7.27 1.872 27.569 3.07 52.733 3.075 25.756-.022 44.54-1.277 50.861-2.642-11.237-3.28-11.776-18.008-12.5-37.816l-.111-2.982c-.843-22.257-18.472-39.69-40.133-39.69A39.306 39.306 0 0 0 72.63 80.212l.001 2.112c.018 17.68.035 34.45-11.576 38.695z"/></g><ellipse cx="82.19" cy="88.104" class="cls-8" rx="4.293" ry="4.501" transform="rotate(-2.016 82.19 88.104)" id="ellipse194094"/><g id="ellipse194096"><ellipse cx="112.872" cy="86.505" class="cls-3" rx="13.515" ry="11.942" transform="rotate(-.849 112.872 86.505)"/><path d="M112.816 99.447c-7.758 0-14.188-5.494-14.452-12.462a12.104 12.104 0 0 1 3.352-8.73 15.296 15.296 0 0 1 10.672-4.683c8.016-.247 14.721 5.324 14.99 12.453a12.105 12.105 0 0 1-3.351 8.73 15.295 15.295 0 0 1-10.672 4.683c-.18.006-.36.01-.54.01zm.112-23.884q-.236 0-.474.008a13.284 13.284 0 0 0-9.275 4.049 10.116 10.116 0 0 0-2.816 7.29c.228 6.032 6.034 10.768 12.927 10.53a13.285 13.285 0 0 0 9.273-4.049 10.118 10.118 0 0 0 2.817-7.29c-.223-5.893-5.763-10.538-12.452-10.538z" class="cls-9"/></g><path d="M138.513 65.143l-.314-.39a5.787 5.787 0 0 0-8.757-.288l-.339.368-.735-.678.339-.368a7.045 7.045 0 0 1 5.042-2.185 6.851 6.851 0 0 1 5.228 2.524l.314.39z" id="path194098"/><g id="g194106"><g id="g194104"><path d="M116.61 92.235a6.685 6.685 0 0 1-3.828-1.626l-.157-.138-.273-5.038.998-.055.25 4.61a5.081 5.081 0 0 0 3.37 1.222 2.554 2.554 0 0 0 1.765-1.202c-.084-.652-.264-1.956-.38-2.41l.969-.248c.17.666.417 2.633.427 2.716l.022.178-.096.152a3.615 3.615 0 0 1-2.57 1.804 3.5 3.5 0 0 1-.498.035z" id="path194100"/><path d="M109.073 92.267a3.577 3.577 0 0 1-.467-.03 3.617 3.617 0 0 1-2.585-1.783l-.098-.151.021-.178c.01-.084.24-2.053.405-2.72l.97.239c-.111.456-.28 1.76-.36 2.414a2.555 2.555 0 0 0 1.776 1.187 5.063 5.063 0 0 0 3.359-1.251l.212-4.611 1 .046-.233 5.04-.156.14a6.654 6.654 0 0 1-3.844 1.658z" id="path194102"/></g></g><g id="path194108"><path d="M117.316 82.976c-.356-.908-.362-2.728-1.418-2.724-1.055.008-2.034-.673-3.071-.669-1.038.007-2.012.691-3.067.696-1.055.007-1.048 1.824-1.395 2.736-.356.911 4.49 3.847 4.49 3.847s4.817-2.977 4.462-3.886z" class="cls-10"/><path d="M112.857 87.195l-.148-.09c-1.887-1.143-4.995-3.207-4.609-4.194a6.302 6.302 0 0 0 .222-.854c.197-.916.443-2.055 1.435-2.062a4.672 4.672 0 0 0 1.46-.335 5.125 5.125 0 0 1 1.608-.361h.011a5.081 5.081 0 0 1 1.6.348 3.928 3.928 0 0 0 1.46.321h.005c.99 0 1.244 1.134 1.449 2.045a6.364 6.364 0 0 0 .23.86c.386.982-2.7 3.072-4.575 4.231zm-.02-7.328h-.01a4.625 4.625 0 0 0-1.426.33 5.151 5.151 0 0 1-1.64.366c-.499.003-.68.67-.884 1.613a6.793 6.793 0 0 1-.247.94c-.068.404 1.89 1.983 4.224 3.413 2.316-1.448 4.257-3.04 4.198-3.45a6.68 6.68 0 0 1-.257-.942c-.21-.937-.397-1.6-.894-1.6h-.02a5.147 5.147 0 0 1-1.625-.352 4.596 4.596 0 0 0-1.42-.318z"/></g><path d="M85.934 65.32l-.82-.572.285-.411a6.786 6.786 0 0 1 10.221-1.059l.364.343-.686.728-.363-.343a5.787 5.787 0 0 0-8.715.903z" id="path194110"/><g id="g194116"><g id="ellipse194112"><ellipse cx="134.49" cy="76.249" rx="6.585" ry="6.841" transform="rotate(-2.025 134.49 76.25)"/><path d="M134.501 84.09a7.415 7.415 0 0 1-5.19-2.125 7.925 7.925 0 0 1-2.402-5.45 7.726 7.726 0 0 1 7.305-8.102 7.437 7.437 0 0 1 5.455 2.12 7.929 7.929 0 0 1 2.402 5.45 7.726 7.726 0 0 1-7.305 8.102 7.968 7.968 0 0 1-.265.005zm-.024-13.682a4.1 4.1 0 0 0-.192.004 5.724 5.724 0 0 0-5.377 6.033 5.936 5.936 0 0 0 1.794 4.084 5.391 5.391 0 0 0 3.993 1.557 5.724 5.724 0 0 0 5.377-6.033 5.937 5.937 0 0 0-1.794-4.084 5.434 5.434 0 0 0-3.801-1.56z" class="cls-2"/></g><ellipse cx="136.426" cy="74.255" class="cls-3" rx="3.238" ry="3.409" transform="rotate(-2.022 136.427 74.255)" id="ellipse194114"/></g><g id="g194126"><g id="g194124"><path d="M140.53 96.767a28.42 28.42 0 0 0-15.536-5.66l.053-.998a29.397 29.397 0 0 1 16.076 5.853z" class="cls-9" id="path194118"/><path d="M137.905 103.496c-3.416-4.101-7.891-8.47-15.18-9.764l.174-.984c7.607 1.35 12.243 5.868 15.775 10.108z" class="cls-9" id="path194120"/><path d="M132.76 109.21c-2.107-5.012-4.865-10.018-10.73-12.678l.413-.91c6.179 2.802 9.053 8.001 11.24 13.201z" class="cls-9" id="path194122"/></g></g><g id="g194136"><g id="g194134"><path d="M85.612 97.992l-.64-.767a29.4 29.4 0 0 1 15.691-6.815l.114.993a28.418 28.418 0 0 0-15.165 6.59z" class="cls-9" id="path194128"/><path d="M88.64 104.55l-.806-.593c3.268-4.446 7.622-9.235 15.133-11.043l.234.972c-7.198 1.733-11.4 6.363-14.562 10.664z" class="cls-9" id="path194130"/><path d="M93.662 110.087l-.943-.33c1.867-5.324 4.422-10.687 10.42-13.858l.467.884c-5.693 3.01-8.144 8.174-9.944 13.304z" class="cls-9" id="path194132"/></g></g><g id="g194142"><g id="ellipse194138"><ellipse cx="91.333" cy="76.249" rx="6.585" ry="6.841" transform="rotate(-1.47 91.333 76.25)"/><path d="M91.343 84.09a7.848 7.848 0 0 1-.21-15.68 7.356 7.356 0 0 1 5.435 2.174 8.031 8.031 0 0 1 .28 11.058 7.41 7.41 0 0 1-5.316 2.445 6.075 6.075 0 0 1-.189.003zm-.02-13.682c-.046 0-.092 0-.138.002a5.847 5.847 0 0 0 .296 11.678 5.428 5.428 0 0 0 3.892-1.797 6.03 6.03 0 0 0-.21-8.285 5.434 5.434 0 0 0-3.84-1.598z" class="cls-2"/></g><ellipse cx="89.279" cy="74.376" class="cls-3" rx="3.238" ry="3.409" transform="rotate(-1.466 89.285 74.38)" id="ellipse194140"/></g><ellipse cx="144.518" cy="88.104" class="cls-8" rx="4.293" ry="4.501" transform="rotate(-2.016 144.518 88.104)" id="ellipse194144"/><path d="M112.823 107.185c-12.061.014-22.855 6.587-27.108 16.51 16.765.735 37.594.695 54.255.04-4.243-9.95-15.06-16.544-27.147-16.55z" class="cls-8" id="path194146"/><path d="M136.659 126.934q-3.996 0-8.072-.016c-4.153-.01-8.327-.023-12.465-.007-26.513.095-59.31-.973-64.993-6.704l1.42-1.408c3.995 4.028 27.152 6.27 63.565 6.112 4.14-.016 8.32-.004 12.479.007 23.035.067 44.784.125 56.024-4.376l.743 1.857c-10.245 4.103-28.56 4.535-48.701 4.535z" class="cls-6" id="path194150"/><g id="path194152"><path d="M107.18 144.388c0 3.806 0 7.554-.064 11.137a187.934 187.934 0 0 0 70 .068c-.16-3.385-.27-7.01-.403-10.832-.733-20.921-16.134-35.578-35.133-35.578s-34.4 14.657-34.4 35.205z" class="cls-7"/><path d="M142.98 159.863a199.59 199.59 0 0 1-36.045-3.355 1 1 0 0 1-.82-1.001c.065-3.573.065-7.238.065-11.12a36.408 36.408 0 0 1 10.367-26.014 35.065 35.065 0 0 1 25.034-10.19c19.869 0 35.402 15.71 36.131 36.543l.09 2.625c.097 2.86.19 5.598.312 8.195a1 1 0 0 1-.806 1.028 177.932 177.932 0 0 1-34.329 3.29zm-34.85-5.17a185.99 185.99 0 0 0 67.947.082 759.814 759.814 0 0 1-.274-7.357l-.09-2.622c-.702-20.056-15.057-34.613-34.132-34.613-19.042 0-33.402 14.705-33.402 34.205 0 3.583 0 6.983-.05 10.304z"/></g><ellipse cx="115.482" cy="146.104" class="cls-8" rx="4.293" ry="4.501" transform="rotate(-2.016 115.482 146.104)" id="ellipse194154"/><path d="M163.943 126.466l-.314-.389a4.713 4.713 0 0 0-3.596-1.736h-.035a4.742 4.742 0 0 0-3.433 1.503l-.339.367-.735-.678.34-.367a5.758 5.758 0 0 1 4.167-1.825h.043a5.725 5.725 0 0 1 4.366 2.107l.314.39z" id="path194156"/><path d="M120.756 126.611l-.82-.572.285-.41a5.669 5.669 0 0 1 8.536-.885l.365.343-.686.728-.364-.342a4.666 4.666 0 0 0-7.03.728z" id="path194158"/><g id="ellipse194160"><ellipse cx="160.651" cy="135.597" rx="5.414" ry="5.624" transform="rotate(-2.025 160.65 135.597)"/><path d="M160.664 142.22a6.63 6.63 0 0 1-.246-13.242 6.627 6.627 0 0 1 .465 13.239 5.512 5.512 0 0 1-.22.004zm-.176-11.244a4.633 4.633 0 0 0 .176 9.245l.149-.002a4.63 4.63 0 0 0-.325-9.243z" class="cls-2"/></g><ellipse cx="162.242" cy="133.958" class="cls-3" rx="2.662" ry="2.802" transform="rotate(-2.022 162.243 133.959)" id="ellipse194162"/><path d="M142.91 159.85a199.203 199.203 0 0 1-35.974-3.342l-9.549-1.777.366-1.966 9.546 1.776a186.782 186.782 0 0 0 69.86.036l6.196-1.79.554 1.922-6.281 1.81a180.192 180.192 0 0 1-34.718 3.332z" class="cls-6" id="path194164"/><g id="g194168"><path d="M158.064 158.006c-1.394-3.247-3.217-6.49-7.084-8.208l.402-.904c4.179 1.856 6.118 5.289 7.593 8.721zm3.464-3.694c-2.377-2.795-5.24-5.497-10.047-6.333l.17-.977c5.13.894 8.254 3.872 10.632 6.667zm1.782-4.376a19.097 19.097 0 0 0-10.295-3.673l.052-.989a20.055 20.055 0 0 1 10.822 3.859z" class="cls-9" id="path194166"/></g><g id="g194176"><path d="M122.814 150.772l-.626-.767a20.009 20.009 0 0 1 10.564-4.492l.111.984a19.03 19.03 0 0 0-10.049 4.275z" class="cls-9" id="path194170"/><path d="M124.864 155.033l-.792-.595c2.201-2.932 5.136-6.09 10.2-7.285l.228.965c-4.745 1.118-7.436 3.985-9.636 6.915z" class="cls-9" id="path194172"/><path d="M128.244 158.61l-.933-.334c1.26-3.513 2.983-7.055 7.04-9.156l.456.879c-3.753 1.944-5.372 5.288-6.563 8.611z" class="cls-9" id="path194174"/></g><g id="ellipse194178"><ellipse cx="125.172" cy="135.597" rx="5.414" ry="5.624" transform="rotate(-1.47 125.172 135.597)"/><path d="M125.182 142.222a6.537 6.537 0 0 1-6.421-6.462 6.691 6.691 0 0 1 1.746-4.716 6.27 6.27 0 0 1 4.497-2.068 6.297 6.297 0 0 1 4.597 1.837 6.692 6.692 0 0 1 1.983 4.622 6.53 6.53 0 0 1-6.244 6.785l-.158.002zm-.128-11.246a4.286 4.286 0 0 0-3.072 1.418 4.707 4.707 0 0 0-1.222 3.315 4.419 4.419 0 1 0 8.825-.224 4.706 4.706 0 0 0-1.39-3.249 4.24 4.24 0 0 0-3.14-1.26zm-.025-1z" class="cls-2"/></g><ellipse cx="123.484" cy="134.057" class="cls-3" rx="2.662" ry="2.802" transform="rotate(-1.466 123.484 134.057)" id="ellipse194180"/><ellipse cx="170.518" cy="146.105" class="cls-8" rx="4.293" ry="4.501" transform="rotate(-2.016 170.518 146.104)" id="ellipse194182"/><g id="ellipse194184"><ellipse cx="142.872" cy="146.974" class="cls-3" rx="11.281" ry="10.41" transform="rotate(-1.311 142.872 146.974)"/><path d="M142.825 157.781c-6.241 0-11.414-4.588-11.624-10.407a10.325 10.325 0 0 1 2.838-7.441 12.146 12.146 0 0 1 8.443-3.76l.014.397-.014-.396c6.445-.213 11.847 4.445 12.061 10.4a10.322 10.322 0 0 1-2.837 7.44 12.147 12.147 0 0 1-8.444 3.76c-.146.004-.292.007-.437.007zm.094-20.821c-.136 0-.272.002-.41.007a11.346 11.346 0 0 0-7.89 3.508 9.537 9.537 0 0 0-2.625 6.87c.2 5.517 5.253 9.842 11.24 9.636a11.347 11.347 0 0 0 7.891-3.508 9.538 9.538 0 0 0 2.626-6.87c-.196-5.392-5.016-9.643-10.832-9.643z" class="cls-9"/></g><g id="path194186"><path d="M147.316 143.726c-.355-.908-.387-2.499-1.418-2.724l-3.072-.669-3.067.696c-1.029.233-1.048 1.824-1.395 2.736-.356.911 4.491 3.847 4.491 3.847s4.816-2.977 4.46-3.886z" class="cls-10"/><path d="M142.856 147.923l-.138-.084c-1.514-.918-4.994-3.16-4.6-4.17a6.91 6.91 0 0 0 .223-.806c.209-.884.446-1.884 1.36-2.092l3.124-.71 3.13.682c.915.2 1.16 1.198 1.376 2.08a6.716 6.716 0 0 0 .231.806c.394 1.006-3.064 3.278-4.568 4.208zm-.029-7.319l-3.01.683c-.591.135-.78.929-.962 1.697a7.09 7.09 0 0 1-.244.874c-.113.389 1.855 1.983 4.243 3.444 2.372-1.482 4.327-3.093 4.215-3.48a7.157 7.157 0 0 1-.252-.874c-.188-.765-.382-1.558-.976-1.687z"/></g><g id="path194188"><path fill="#ff8080" d="M142.309 148.665a2.52 2.52 0 0 1-1.113.957 2.846 2.846 0 0 1-1.563.188 3.24 3.24 0 0 1-1.06-.37v.057a4.25 4.25 0 1 0 8.499 0v-.049a3.234 3.234 0 0 1-1.048.362 2.843 2.843 0 0 1-1.563-.188 2.53 2.53 0 0 1-1.113-.957c-.695-1.71-.567-1.26-1.04 0z"/><path d="M142.822 154.247a4.755 4.755 0 0 1-4.75-4.75.548.548 0 0 1 .246-.459.51.51 0 0 1 .495-.036 2.716 2.716 0 0 0 .896.313 2.35 2.35 0 0 0 1.287-.151 2.02 2.02 0 0 0 .863-.725c.074-.198.13-.375.18-.523.149-.459.278-.855.712-.871.453.009.631.378 1.06 1.432a2.058 2.058 0 0 0 .85.687 2.37 2.37 0 0 0 1.288.151 2.74 2.74 0 0 0 .885-.306.5.5 0 0 1 .738.427 4.769 4.769 0 0 1-4.75 4.811zm-3.673-4.032a3.745 3.745 0 0 0 7.353.002 3.437 3.437 0 0 1-2.242-.137 3.04 3.04 0 0 1-1.335-1.147l-.097-.23a10.1 10.1 0 0 1-.05.137.5.5 0 0 1-.046.092 3.032 3.032 0 0 1-1.336 1.148 3.31 3.31 0 0 1-1.84.224 3.49 3.49 0 0 1-.407-.09z"/></g><path d="M138.695 166.394c-22.462 0-35.672-2.267-55.86-7.174l.472-1.944c22.273 5.414 35.985 7.594 63.274 7.033l.041 2c-2.772.056-5.41.085-7.927.085z" class="cls-6" id="path194190"/><path d="M135.046 174.772a104.774 104.774 0 0 1-15.263-1.079l.287-1.978c9.802 1.419 19.578 1.41 32.688-.035l.219 1.988a163.336 163.336 0 0 1-17.931 1.104z" class="cls-6" id="path194192"/><g id="path194194"><path d="M48.675 134.522c0 3.075 0 6.102-.05 8.996a121.239 121.239 0 0 0 50.475.055c-.11-2.735-.197-5.662-.291-8.75-.529-16.898-12.293-24.64-25.312-24.64-13.02 0-24.822 7.742-24.822 24.34z" class="cls-7"/><path d="M74.485 147.215a129.321 129.321 0 0 1-26.06-2.718 1 1 0 0 1-.799-.996c.049-2.886.049-5.845.049-8.979 0-8.015 2.721-14.635 7.87-19.146 4.56-3.993 10.934-6.193 17.952-6.193 11.768 0 25.72 6.707 26.311 25.609l.026.84c.085 2.776.166 5.418.265 7.901a1 1 0 0 1-.784 1.017 115.377 115.377 0 0 1-24.83 2.665zm-24.846-4.513a119.567 119.567 0 0 0 48.429.071 964.422 964.422 0 0 1-.233-7.08l-.026-.84c-.545-17.452-12.917-23.67-24.312-23.67-10.99 0-23.822 6.113-23.822 23.34 0 2.842 0 5.541-.036 8.18z"/></g><path d="M88.82 121.839l-.324-.381a3.269 3.269 0 0 0-2.449-1.13h-.003a3.28 3.28 0 0 0-2.357 1.023l-.342.365-.73-.684.341-.365a4.303 4.303 0 0 1 3.089-1.34h.004a4.279 4.279 0 0 1 3.207 1.483l.325.38z" id="path194196"/><path d="M58.013 121.91l-.792-.611.305-.396a4.207 4.207 0 0 1 6.273-.445l.358.35-.698.715-.358-.348a3.206 3.206 0 0 0-4.783.338z" id="path194198"/><g id="ellipse194200"><ellipse cx="87.612" cy="130.793" rx="4.747" ry="4.879" transform="rotate(-2.82 87.612 130.793)"/><path d="M87.624 136.672a5.832 5.832 0 0 1-5.756-5.679 5.906 5.906 0 0 1 1.526-4.203 5.636 5.636 0 0 1 4.01-1.872 5.78 5.78 0 0 1 5.952 5.675 5.904 5.904 0 0 1-1.525 4.202 5.64 5.64 0 0 1-4.01 1.873 4.49 4.49 0 0 1-.197.004zm-.021-9.758l-.129.002a3.658 3.658 0 0 0-2.599 1.218 3.918 3.918 0 0 0-1.008 2.789 3.84 3.84 0 0 0 3.884 3.747 3.66 3.66 0 0 0 2.598-1.218 3.915 3.915 0 0 0 1.008-2.789 3.828 3.828 0 0 0-3.754-3.749zm-.164-.997z" class="cls-2"/></g><ellipse cx="89.008" cy="129.37" class="cls-3" rx="2.335" ry="2.431" transform="rotate(-2.558 89.008 129.37)" id="ellipse194202"/><g id="ellipse194204"><ellipse cx="60.212" cy="130.793" rx="4.747" ry="4.879" transform="rotate(-2.047 60.211 130.793)"/><path d="M60.218 136.672a5.827 5.827 0 0 1-5.752-5.735 5.906 5.906 0 0 1 1.567-4.188 5.64 5.64 0 0 1 4.029-1.834 5.807 5.807 0 0 1 5.895 5.733 5.904 5.904 0 0 1-1.567 4.188 5.64 5.64 0 0 1-4.028 1.834 6.966 6.966 0 0 1-.144.002zm-.015-9.758l-.092.001a3.657 3.657 0 0 0-2.61 1.191 3.921 3.921 0 0 0-1.036 2.78 3.798 3.798 0 0 0 3.847 3.784 3.657 3.657 0 0 0 2.61-1.191 3.918 3.918 0 0 0 1.036-2.78 3.827 3.827 0 0 0-3.755-3.785z" class="cls-2"/></g><g id="path194206"><path d="M73.352 132.785c-4.47.152-7.973 3.606-7.824 7.714.052 1.394.53 4.248 1.377 5.401 4.499.243 8.97.27 13.322.096 1.021-1.327 1.544-4.426 1.489-6.047-.15-4.109-3.894-7.316-8.364-7.164z" class="cls-3"/><path d="M74.602 147.107c-2.585 0-5.176-.069-7.751-.208l-.473-.026-.28-.38c-1.072-1.46-1.52-4.644-1.57-5.957a8.081 8.081 0 0 1 2.22-5.824 9.453 9.453 0 0 1 6.57-2.927c5.014-.168 9.228 3.477 9.397 8.127.061 1.804-.493 5.131-1.695 6.694l-.286.37-.467.02c-1.878.074-3.77.111-5.665.111zm-7.113-2.177c4.054.203 8.147.233 12.18.087a12.084 12.084 0 0 0 1.047-5.035c-.129-3.548-3.39-6.322-7.33-6.199a7.44 7.44 0 0 0-5.176 2.292 6.093 6.093 0 0 0-1.683 4.388 13.948 13.948 0 0 0 .962 4.467z" class="cls-9"/></g><ellipse cx="58.731" cy="129.457" class="cls-3" rx="2.335" ry="2.431" transform="rotate(-1.855 58.731 129.457)" id="ellipse194208"/><g id="path194210"><path d="M76.898 140.063c-.26-.662-.288-1.821-1.048-1.985l-2.27-.488-2.267.507c-.76.17-.775 1.33-1.032 1.994-.26.665 3.32 2.804 3.32 2.804s3.56-2.17 3.296-2.832z" class="cls-10"/><path d="M73.603 143.204l-.138-.08c-1.72-1.03-3.713-2.407-3.43-3.13a4.73 4.73 0 0 0 .163-.579c.152-.63.34-1.415 1.057-1.575l2.324-.52 2.326.5c.719.155.915.94 1.072 1.57a4.824 4.824 0 0 0 .167.576c.284.719-1.695 2.113-3.405 3.155zm-.022-5.344l-2.21.495c-.367.082-.505.542-.659 1.184a5.216 5.216 0 0 1-.184.648c.022.3 1.412 1.393 3.072 2.399 1.639-1.014 3.013-2.111 3.046-2.44a5.503 5.503 0 0 1-.182-.627c-.16-.642-.302-1.103-.67-1.182zm3.07 2.3z"/></g><path d="M74.117 155.132c-11.732-.043-19.45-.997-29.496-3.648l.51-1.933c9.863 2.602 17.45 3.539 28.993 3.58z" class="cls-6" id="path194212"/><ellipse cx="89.901" cy="141.773" class="cls-8" rx="3.534" ry="3.706" transform="rotate(-2.018 89.901 141.783)" id="ellipse194214"/><ellipse cx="57.901" cy="141.774" class="cls-8" rx="3.534" ry="3.706" transform="rotate(-2.016 57.901 141.773)" id="ellipse194216"/><path d="M74.427 147.062a130.006 130.006 0 0 1-32.672-4.078l.51-1.933c19.766 5.213 43.319 5.36 61.467.38l.53 1.93a114.578 114.578 0 0 1-29.835 3.7z" class="cls-6" id="path194218"/></svg> diff --git a/pkg/hooks/docs/oci-hooks.5.md b/pkg/hooks/docs/oci-hooks.5.md index c876dd2f8..fc0442283 100644 --- a/pkg/hooks/docs/oci-hooks.5.md +++ b/pkg/hooks/docs/oci-hooks.5.md @@ -90,7 +90,7 @@ $ cat /etc/containers/oci/hooks.d/oci-systemd-hook.json "path": "/usr/libexec/oci/hooks.d/oci-systemd-hook" } "when": { - "args": [".*/init$" , ".*/systemd$"], + "commands": [".*/init$" , ".*/systemd$"], }, "stages": ["prestart", "poststop"] } diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go index 9529346b4..8b6eab892 100644 --- a/test/e2e/common_test.go +++ b/test/e2e/common_test.go @@ -10,6 +10,7 @@ import ( "sort" "strings" "testing" + "time" "github.com/containers/libpod/cmd/podman/shared" "github.com/containers/libpod/libpod" @@ -22,6 +23,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/onsi/gomega/gexec" + "github.com/pkg/errors" ) var ( @@ -367,6 +369,18 @@ func (p *PodmanTestIntegration) RunLsContainer(name string) (*PodmanSessionInteg return session, session.ExitCode(), session.OutputToString() } +// RunNginxWithHealthCheck runs the alpine nginx container with an optional name and adds a healthcheck into it +func (p *PodmanTestIntegration) RunNginxWithHealthCheck(name string) (*PodmanSessionIntegration, string) { + var podmanArgs = []string{"run"} + if name != "" { + podmanArgs = append(podmanArgs, "--name", name) + } + podmanArgs = append(podmanArgs, "-dt", "-P", "--healthcheck-command", "CMD-SHELL curl http://localhost/", nginx) + session := p.Podman(podmanArgs) + session.WaitWithDefaultTimeout() + return session, session.OutputToString() +} + func (p *PodmanTestIntegration) RunLsContainerInPod(name, pod string) (*PodmanSessionIntegration, int, string) { var podmanArgs = []string{"run", "--pod", pod} if name != "" { @@ -508,3 +522,16 @@ func (p *PodmanTestIntegration) ImageExistsInMainStore(idOrName string) bool { results.WaitWithDefaultTimeout() return Expect(results.ExitCode()).To(Equal(0)) } + +func (p *PodmanTestIntegration) RunHealthCheck(cid string) error { + for i := 0; i < 10; i++ { + hc := p.Podman([]string{"healthcheck", "run", cid}) + hc.WaitWithDefaultTimeout() + if hc.ExitCode() == 0 { + return nil + } + fmt.Printf("Waiting for %s to pass healthcheck\n", cid) + time.Sleep(1 * time.Second) + } + return errors.Errorf("unable to detect %s as running", cid) +} diff --git a/test/e2e/port_test.go b/test/e2e/port_test.go index e45118361..26c5fd7d0 100644 --- a/test/e2e/port_test.go +++ b/test/e2e/port_test.go @@ -48,11 +48,14 @@ var _ = Describe("Podman port", func() { Expect(result.ExitCode()).ToNot(Equal(0)) }) - It("podman port -l nginx", func() { - session := podmanTest.Podman([]string{"run", "-dt", "-P", nginx}) - session.WaitWithDefaultTimeout() + It("podman port -l nginx", func() { + session, cid := podmanTest.RunNginxWithHealthCheck("") Expect(session.ExitCode()).To(Equal(0)) + if err := podmanTest.RunHealthCheck(cid); err != nil { + Fail(err.Error()) + } + result := podmanTest.Podman([]string{"port", "-l"}) result.WaitWithDefaultTimeout() Expect(result.ExitCode()).To(Equal(0)) @@ -61,10 +64,13 @@ var _ = Describe("Podman port", func() { }) It("podman container port -l nginx", func() { - session := podmanTest.Podman([]string{"container", "run", "-dt", "-P", nginx}) - session.WaitWithDefaultTimeout() + session, cid := podmanTest.RunNginxWithHealthCheck("") Expect(session.ExitCode()).To(Equal(0)) + if err := podmanTest.RunHealthCheck(cid); err != nil { + Fail(err.Error()) + } + result := podmanTest.Podman([]string{"container", "port", "-l"}) result.WaitWithDefaultTimeout() Expect(result.ExitCode()).To(Equal(0)) @@ -73,10 +79,13 @@ var _ = Describe("Podman port", func() { }) It("podman port -l port nginx", func() { - session := podmanTest.Podman([]string{"run", "-dt", "-P", nginx}) - session.WaitWithDefaultTimeout() + session, cid := podmanTest.RunNginxWithHealthCheck("") Expect(session.ExitCode()).To(Equal(0)) + if err := podmanTest.RunHealthCheck(cid); err != nil { + Fail(err.Error()) + } + result := podmanTest.Podman([]string{"port", "-l", "80"}) result.WaitWithDefaultTimeout() Expect(result.ExitCode()).To(Equal(0)) @@ -85,10 +94,13 @@ var _ = Describe("Podman port", func() { }) It("podman port -a nginx", func() { - session := podmanTest.Podman([]string{"run", "-dt", "-P", nginx}) - session.WaitWithDefaultTimeout() + session, cid := podmanTest.RunNginxWithHealthCheck("") Expect(session.ExitCode()).To(Equal(0)) + if err := podmanTest.RunHealthCheck(cid); err != nil { + Fail(err.Error()) + } + result := podmanTest.Podman([]string{"port", "-a"}) result.WaitWithDefaultTimeout() Expect(result.ExitCode()).To(Equal(0)) diff --git a/test/install/Dockerfile.Fedora b/test/install/Dockerfile.Fedora index 74cee771d..3e7b6e238 100644 --- a/test/install/Dockerfile.Fedora +++ b/test/install/Dockerfile.Fedora @@ -1,3 +1,3 @@ -FROM registry.fedoraproject.org/fedora:29 +FROM registry.fedoraproject.org/fedora:30 RUN dnf install -y rpms/x86_64/* diff --git a/vendor.conf b/vendor.conf index 8b17fc35b..76e8b0003 100644 --- a/vendor.conf +++ b/vendor.conf @@ -93,7 +93,7 @@ k8s.io/api kubernetes-1.10.13-beta.0 https://github.com/kubernetes/api k8s.io/apimachinery kubernetes-1.10.13-beta.0 https://github.com/kubernetes/apimachinery k8s.io/client-go kubernetes-1.10.13-beta.0 https://github.com/kubernetes/client-go github.com/mrunalp/fileutils 7d4729fb36185a7c1719923406c9d40e54fb93c7 -github.com/containers/buildah v1.8.4 +github.com/containers/buildah v1.9.0 github.com/varlink/go 0f1d566d194b9d6d48e0d47c5e4d822628919066 # TODO: Gotty has not been updated since 2012. Can we find replacement? github.com/Nvveen/Gotty cd527374f1e5bff4938207604a14f2e38a9cf512 diff --git a/vendor/github.com/containers/buildah/buildah.go b/vendor/github.com/containers/buildah/buildah.go index b97e048cc..329835d7a 100644 --- a/vendor/github.com/containers/buildah/buildah.go +++ b/vendor/github.com/containers/buildah/buildah.go @@ -26,7 +26,7 @@ const ( Package = "buildah" // Version for the Package. Bump version in contrib/rpm/buildah.spec // too. - Version = "1.8.4" + Version = "1.9.0" // The value we use to identify what type of information, currently a // serialized Builder structure, we are using as per-container state. // This should only be changed when we make incompatible changes to diff --git a/vendor/github.com/containers/buildah/run_linux.go b/vendor/github.com/containers/buildah/run_linux.go index 55f9502b2..0bf37da59 100644 --- a/vendor/github.com/containers/buildah/run_linux.go +++ b/vendor/github.com/containers/buildah/run_linux.go @@ -1134,8 +1134,14 @@ func runCopyStdio(stdio *sync.WaitGroup, copyPipes bool, stdioPipe [][]int, copy setNonblock(wfd, writeDesc[wfd], false) } - setNonblock(stdioPipe[unix.Stdin][1], writeDesc[stdioPipe[unix.Stdin][1]], true) + if copyPipes { + setNonblock(stdioPipe[unix.Stdin][1], writeDesc[stdioPipe[unix.Stdin][1]], true) + } + + runCopyStdioPassData(stdio, copyPipes, stdioPipe, copyConsole, consoleListener, finishCopy, finishedCopy, spec, relayMap, relayBuffer, readDesc, writeDesc) +} +func runCopyStdioPassData(stdio *sync.WaitGroup, copyPipes bool, stdioPipe [][]int, copyConsole bool, consoleListener *net.UnixListener, finishCopy []int, finishedCopy chan struct{}, spec *specs.Spec, relayMap map[int]int, relayBuffer map[int]*bytes.Buffer, readDesc map[int]string, writeDesc map[int]string) { closeStdin := false // Pass data back and forth. diff --git a/version/version.go b/version/version.go index 2ef7a9c65..3dbf4768d 100644 --- a/version/version.go +++ b/version/version.go @@ -4,7 +4,7 @@ package version // NOTE: remember to bump the version at the top // of the top-level README.md file when this is // bumped. -const Version = "1.4.2-dev" +const Version = "1.4.3-dev" // RemoteAPIVersion is the version for the remote // client API. It is used to determine compatibility |