--- /dev/null
+(* Simple demo program showing how to list out secrets.
+ Usage: list_secrets [URI]
+ (C) Copyright 2018 Pino Toscano, Red Hat Inc.
+ http://libvirt.org/
+ *)
+
+open Printf
+
+module C = Libvirt.Connect
+module S = Libvirt.Secret
+
+let string_of_secret_usage_type = function
+ | S.NoType -> "none"
+ | S.Volume -> "volume"
+ | S.Ceph -> "ceph"
+ | S.ISCSI -> "iscsi"
+ | S.TLS -> "tls"
+
+let () =
+ try
+ let name =
+ if Array.length Sys.argv >= 2 then
+ Some (Sys.argv.(1))
+ else
+ None in
+ let conn = C.connect_auth_readonly ?name (C.get_auth_default ()) in
+
+ (* List all the secrets. *)
+ let secrets = C.list_secrets conn (C.num_of_secrets conn) in
+ let secrets = Array.to_list secrets in
+ let secrets = List.map (S.lookup_by_uuid_string conn) secrets in
+ List.iter (
+ fun secret ->
+ let uuid = S.get_uuid_string secret in
+ let usageType = string_of_secret_usage_type (S.get_usage_type secret) in
+ let usageId = S.get_usage_id secret in
+ printf "%*s %-7s %s\n%!"
+ (Libvirt.uuid_string_length) uuid usageType usageId
+ ) secrets
+ with
+ Libvirt.Virterror err ->
+ eprintf "error: %s\n" (Libvirt.Virterror.to_string err)
+
+let () =
+ (* Run the garbage collector which is a good way to check for
+ * memory corruption errors and reference counting issues in libvirt.
+ *)
+ Gc.compact ()