diff options
author | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2024-09-09 17:01:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-09 17:01:04 +0300 |
commit | 92504cee34006f2198393a51efd93bea46346ec2 (patch) | |
tree | f2ee7d0f4e06ff822830af1e5c8eb8ee220ee702 | |
parent | b2afa78d6f006e753be1fa07a640d14fe94a0b8f (diff) | |
download | vyos-1x-92504cee34006f2198393a51efd93bea46346ec2.tar.gz vyos-1x-92504cee34006f2198393a51efd93bea46346ec2.zip |
container: T6702: re-add missing UNIX API socket (#4039)
During podman upgrade and a build from the original source the UNIX socket
definition for systemd got lost in translation.
This commit re-adds the UNIX socket which is started on boot to interact with
Podman.
Example:
curl --unix-socket /run/podman/podman.sock -H 'content-type: application/json' \
-sf http://localhost/containers/json
(cherry picked from commit f67e217f2716937115a3bdf6d316b172bbec75e5)
Co-authored-by: Christian Breunig <christian@breunig.cc>
-rw-r--r-- | debian/vyos-1x.postinst | 3 | ||||
-rwxr-xr-x | smoketest/scripts/cli/test_container.py | 18 | ||||
-rw-r--r-- | src/systemd/podman.service | 16 | ||||
-rw-r--r-- | src/systemd/podman.socket | 10 |
4 files changed, 47 insertions, 0 deletions
diff --git a/debian/vyos-1x.postinst b/debian/vyos-1x.postinst index 778cb10c1..8d27a2a70 100644 --- a/debian/vyos-1x.postinst +++ b/debian/vyos-1x.postinst @@ -187,6 +187,9 @@ fi # Enable Cloud-init pre-configuration service systemctl enable vyos-config-cloud-init.service +# Enable Podman API +systemctl enable podman.service + # Generate API GraphQL schema /usr/libexec/vyos/services/api/graphql/generate/generate_schema.py diff --git a/smoketest/scripts/cli/test_container.py b/smoketest/scripts/cli/test_container.py index 3dd97a175..5e33eba40 100755 --- a/smoketest/scripts/cli/test_container.py +++ b/smoketest/scripts/cli/test_container.py @@ -230,5 +230,23 @@ class TestContainer(VyOSUnitTestSHIM.TestCase): tmp = cmd(f'sudo podman exec -it {cont_name} id -g') self.assertEqual(tmp, gid) + def test_api_socket(self): + base_name = 'api-test' + container_list = range(1, 5) + + for ii in container_list: + name = f'{base_name}-{ii}' + self.cli_set(base_path + ['name', name, 'image', cont_image]) + self.cli_set(base_path + ['name', name, 'allow-host-networks']) + + self.cli_commit() + + # Query API about running containers + tmp = cmd("sudo curl --unix-socket /run/podman/podman.sock -H 'content-type: application/json' -sf http://localhost/containers/json") + tmp = json.loads(tmp) + + # We expect the same amount of containers from the API that we started above + self.assertEqual(len(container_list), len(tmp)) + if __name__ == '__main__': unittest.main(verbosity=2) diff --git a/src/systemd/podman.service b/src/systemd/podman.service new file mode 100644 index 000000000..20a16304b --- /dev/null +++ b/src/systemd/podman.service @@ -0,0 +1,16 @@ +[Unit] +Description=Podman API Service +Requires=podman.socket +After=podman.socket +Documentation=man:podman-system-service(1) +StartLimitIntervalSec=0 + +[Service] +Delegate=true +Type=exec +KillMode=process +Environment=LOGGING="--log-level=info" +ExecStart=/usr/bin/podman $LOGGING system service + +[Install] +WantedBy=default.target diff --git a/src/systemd/podman.socket b/src/systemd/podman.socket new file mode 100644 index 000000000..397058ee4 --- /dev/null +++ b/src/systemd/podman.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Podman API Socket +Documentation=man:podman-system-service(1) + +[Socket] +ListenStream=%t/podman/podman.sock +SocketMode=0660 + +[Install] +WantedBy=sockets.target |