tripleo-validations/roles/oslo_config_validator/resources/library/podman

298 lines
9.3 KiB
Python
Executable File

#!/usr/bin/python3
# Copyright 2021 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# This script is to mock podman command when testing containers
# created by the ansible collection containers.podman.
from json import dumps
from yaml import safe_load as yaml_safe_load
import sys
sample = {
"Id": "21d8b432eaec1b4eac2a21a78de524bdbb2f074d4ea43d3605b2b072ffe21878",
"State": {
"Status": "running",
"Running": True,
},
"HostConfig": {
"Binds": [],
"CgroupManager": "systemd",
"CgroupMode": "private",
"ContainerIDFile": "",
"LogConfig": {
"Type": "k8s-file",
"Config": None,
"Path": "/ctr.log",
"Tag": "",
"Size": "0B"
},
"NetworkMode": "slirp4netns",
"RestartPolicy": {
"Name": "",
"MaximumRetryCount": 0
},
"AutoRemove": False,
"VolumeDriver": "",
"VolumesFrom": None,
"CapAdd": [],
"CapDrop": [
"CAP_AUDIT_WRITE",
"CAP_MKNOD",
"CAP_NET_RAW"
],
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": [],
"GroupAdd": [],
"IpcMode": "private",
"Cgroup": "",
"Cgroups": "default",
"Links": None,
"OomScoreAdj": 0,
"PidMode": "private",
"Privileged": False,
"PublishAllPorts": False,
"ReadonlyRootfs": False,
"SecurityOpt": [],
"Tmpfs": {},
"UTSMode": "private",
"UsernsMode": "",
"ShmSize": 65536000,
"Runtime": "oci",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "user.slice",
"BlkioWeight": 0,
"BlkioWeightDevice": None,
"BlkioDeviceReadBps": None,
"BlkioDeviceWriteBps": None,
"BlkioDeviceReadIOps": None,
"BlkioDeviceWriteIOps": None,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": 0,
"OomKillDisable": False,
"PidsLimit": 2048,
"Ulimits": [],
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"CgroupConf": None
},
"Config": {
"Hostname": "9d8048113074",
"Domainname": "",
"User": "1001",
"AttachStdin": False,
"AttachStdout": False,
"AttachStderr": False,
"Tty": False,
"OpenStdin": False,
"StdinOnce": False,
"Env": [
"PATH=/opt/app-root/src/bin:/opt/app-root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"TERM=xterm",
"container=oci",
"STI_SCRIPTS_URL=image:///usr/libexec/s2i",
"STI_SCRIPTS_PATH=/usr/libexec/s2i",
"HOME=/var/lib/redis",
"REDIS_VERSION=5",
"REDIS_PREFIX=/usr",
"CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/redis",
"APP_ROOT=/opt/app-root",
"PLATFORM=el8",
"HOSTNAME=9d8048113074"
],
"Cmd": [
"run-redis"
],
"Image": "registry.redhat.io/rhel8/redis-5:latest",
"Volumes": [],
"WorkingDir": "/opt/app-root/src",
"Entrypoint": "container-entrypoint",
"OnBuild": None,
"Labels": {
"architecture": "x86_64",
"build-date": "2021-05-05T06:23:07.897115",
"vcs-ref": "ea375e008017960b0b749c1aae4dcd386ee68205",
"vcs-type": "git",
},
"Annotations": {
"io.container.manager": "libpod",
"io.kubernetes.cri-o.Created": "2021-05-22T10:08:18.243648647-04:00",
"io.kubernetes.cri-o.TTY": "false",
"io.podman.annotations.autoremove": "FALSE",
"io.podman.annotations.init": "FALSE",
"io.podman.annotations.privileged": "FALSE",
"io.podman.annotations.publish-all": "FALSE",
"org.opencontainers.image.stopSignal": "15"
},
"StopSignal": 15,
"Umask": "0022",
"Timeout": 0,
"StopTimeout": 10
},
"Image": "0ece6dfb3015c221c8ad6d364dea7884ae3e24becd60e94b80d5361f4ed78f47",
"ImageName": "undercloud-0.ctlplane.redhat.local:8787/rh-osbs/rhosp16-openstack-nova-compute:16.1_20210430.1",
"Name": "nova_compute",
"Mounts": [],
"OCIRuntime": "crun",
"ConmonPidFile": "/run/user/1000/containers/overlay-containers/9d8048113074bdd2c25ba3b0e0606608fbb6e82173afe61696f7bd48f61d7aa4/userdata/conmon.pid",
"PidFile": "",
"RestartCount": 0,
"MountLabel": "system_u:object_r:container_file_t:s0:c738,c1002",
"ProcessLabel": "system_u:system_r:container_t:s0:c738,c1002",
"AppArmorProfile": "",
"EffectiveCaps": None,
"BoundingCaps": [
"CAP_CHOWN",
"CAP_DAC_OVERRIDE",
"CAP_FOWNER",
"CAP_FSETID",
"CAP_KILL",
"CAP_NET_BIND_SERVICE",
"CAP_SETFCAP",
"CAP_SETGID",
"CAP_SETPCAP",
"CAP_SETUID",
"CAP_SYS_CHROOT"
],
"ExecIDs": [],
}
image_get = {
"Id": "1f202f9b76988ef7cd962db56a801b89539e0dcf1bc03953883faaaf83f4c654",
"Digest": "sha256:ab901ece87a1bad3bbf7581356f18c1f79527124ed4792158c2b0b43a4896994",
"RepoTags": [
"something/something:latest"
],
"RepoDigests": [
"something/something@sha256:ab901ece87a1bad3bbf7581356f18c1f79527124ed4792158c2b0b43a4896994"
],
"Parent": "5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
"Comment": "",
"Created": "2021-09-27T21:49:36.486090789Z",
"Config": {
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"sleep",
"infinity"
],
"Labels": {
"build_date": "2021-09-27",
"description": "something",
"io.buildah.version": "1.23.0",
"maintainer": "David Vallee Delisle \u003cdvd@redhat.com\u003e",
"name": "something",
"org.label-schema.build-date": "20210915",
"org.label-schema.license": "GPLv2",
"vendor": "Red Hat"
}
},
"Version": "",
"Author": "David Vallee Delisle",
"Architecture": "amd64",
"Os": "linux",
"Size": 1004968286,
"VirtualSize": 1004968286,
"GraphDriver": {
"Name": "overlay",
"Data": {
"LowerDir": "/home/dvd/.local/share/containers/storage/overlay/74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59/diff",
"UpperDir": "/home/dvd/.local/share/containers/storage/overlay/1e79d79d8ad3c6eb4446e0c429275c70f0e2918f2e0038441cd11e6f3e0b2aaf/diff",
"WorkDir": "/home/dvd/.local/share/containers/storage/overlay/1e79d79d8ad3c6eb4446e0c429275c70f0e2918f2e0038441cd11e6f3e0b2aaf/work"
}
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59",
"sha256:47bd6062c936b8eead8f0c88a7023a4e2f8c6e53086d201c9da048dde7e3b9a3"
]
},
"Labels": {
"build_date": "2021-09-27",
"description": "something",
"io.buildah.version": "1.23.0",
"maintainer": "David Vallee Delisle \u003cdvd@redhat.com\u003e",
"name": "something",
"org.label-schema.build-date": "20210915",
"org.label-schema.license": "GPLv2",
"vendor": "Red Hat"
},
"Annotations": {
"org.opencontainers.image.base.digest": "sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc",
"org.opencontainers.image.base.name": "quay.io/centos/centos:8"
},
"ManifestType": "application/vnd.oci.image.manifest.v1+json",
"User": "",
}
def read_config(config='/test.config.yml'):
with open(config, 'r') as yaml_config:
test_config = yaml_safe_load(yaml_config)
return test_config
def container_list():
test_config = read_config('/test.config.yml')
config_folder = test_config.get('config_folder')
sample['Name'] = test_config.get('service_name')
sample['State']['Running'] = bool(test_config.get('service_running', True))
sample['Mounts'].append({'Type': 'bind', 'Source': config_folder})
return [sample]
def container_exec():
test_config = read_config('/test.config.yml')
return test_config.get('validator_out')
if __name__ == '__main__':
if "image" in sys.argv[1]:
print(dumps([image_get]))
elif "version" in sys.argv[1]:
print("podman version 3.3.1")
elif len(sys.argv) > 1 and sys.argv[2] == "run":
print(container_exec())
elif sys.argv[1] == "container":
container = container_list()
container[0]['cmd'] = sys.argv
print(dumps(container))
else:
print(container_exec())
print(sys.argv)