Provides an interface for querying the podman rest api. Most of the interface is generated from the the official podman swagger file. This crate adds a layer to make it possible to connect to the podman rest api over ssh to a unix socket and directl to a unix socket. Connections over ssh are commonly necessary on macOs where the container runtime runs in a virtual machine accessible over ssh.
use podman_rest_client::PodmanRestClient;
use podman_rest_client::guess_configuration;
// Setup the default configuration
let config = guess_configuration().await.unwrap();
// Initialize a client
let client = PodmanRestClient::new(config).await.unwrap();
// Fetch a list of container images
let images = client.images_api().image_list_libpod(None,None).await.unwrap();
guess_configuration
tries to find the default path to the podman socket depending on the
platform you are on. You can also manually create clients configurations:
use podman_rest_client::PodmanRestClient;
use podman_rest_client::Config;
let ssh_client = PodmanRestClient::new(Config {
uri: "ssh://core@127.0.0.1:63169/run/user/501/podman/podman.sock".to_string(),
identity_file: Some("/path/to/identity_file".into()),
}).await.unwrap();
let unix_client = PodmanRestClient::new(Config {
uri: "unix:///run/user/501/podman/podman.sock".to_string(),
identity_file: None,
}).await.unwrap();
- Make ssh support a crate feature that can be excluded.
- Attempt to re-establish the ssh connection if lost. (Alternatively would it be so horrible to just establish a new ssh connection on each request?)