diff options
Diffstat (limited to 'man/org.freedesktop.machine1.xml')
-rw-r--r-- | man/org.freedesktop.machine1.xml | 643 |
1 files changed, 643 insertions, 0 deletions
diff --git a/man/org.freedesktop.machine1.xml b/man/org.freedesktop.machine1.xml new file mode 100644 index 0000000..284c3d6 --- /dev/null +++ b/man/org.freedesktop.machine1.xml @@ -0,0 +1,643 @@ +<?xml version='1.0'?> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" > +<!-- SPDX-License-Identifier: LGPL-2.1-or-later --> + +<refentry id="org.freedesktop.machine1" conditional='ENABLE_MACHINED' + xmlns:xi="http://www.w3.org/2001/XInclude"> + <refentryinfo> + <title>org.freedesktop.machine1</title> + <productname>systemd</productname> + </refentryinfo> + + <refmeta> + <refentrytitle>org.freedesktop.machine1</refentrytitle> + <manvolnum>5</manvolnum> + </refmeta> + + <refnamediv> + <refname>org.freedesktop.machine1</refname> + <refpurpose>The D-Bus interface of systemd-machined</refpurpose> + </refnamediv> + + <refsect1> + <title>Introduction</title> + + <para> + <citerefentry><refentrytitle>systemd-machined.service</refentrytitle><manvolnum>8</manvolnum></citerefentry> + is a system service that keeps track of locally running virtual machines and containers. + This page describes the D-Bus interface.</para> + </refsect1> + + <refsect1> + <title>The Manager Object</title> + + <para>The service exposes the following interfaces on the Manager object on the bus:</para> + + <programlisting executable="systemd-machined" node="/org/freedesktop/machine1" interface="org.freedesktop.machine1.Manager"> +node /org/freedesktop/machine1 { + interface org.freedesktop.machine1.Manager { + methods: + GetMachine(in s name, + out o machine); + GetImage(in s name, + out o image); + GetMachineByPID(in u pid, + out o machine); + ListMachines(out a(ssso) machines); + ListImages(out a(ssbttto) images); + CreateMachine(in s name, + in ay id, + in s service, + in s class, + in u leader, + in s root_directory, + in a(sv) scope_properties, + out o path); + CreateMachineWithNetwork(in s name, + in ay id, + in s service, + in s class, + in u leader, + in s root_directory, + in ai ifindices, + in a(sv) scope_properties, + out o path); + RegisterMachine(in s name, + in ay id, + in s service, + in s class, + in u leader, + in s root_directory, + out o path); + RegisterMachineWithNetwork(in s name, + in ay id, + in s service, + in s class, + in u leader, + in s root_directory, + in ai ifindices, + out o path); + UnregisterMachine(in s name); + TerminateMachine(in s id); + KillMachine(in s name, + in s who, + in i signal); + GetMachineAddresses(in s name, + out a(iay) addresses); + GetMachineOSRelease(in s name, + out a{ss} fields); + OpenMachinePTY(in s name, + out h pty, + out s pty_path); + OpenMachineLogin(in s name, + out h pty, + out s pty_path); + OpenMachineShell(in s name, + in s user, + in s path, + in as args, + in as environment, + out h pty, + out s pty_path); + BindMountMachine(in s name, + in s source, + in s destination, + in b read_only, + in b mkdir); + CopyFromMachine(in s name, + in s source, + in s destination); + CopyToMachine(in s name, + in s source, + in s destination); + OpenMachineRootDirectory(in s name, + out h fd); + GetMachineUIDShift(in s name, + out u shift); + RemoveImage(in s name); + RenameImage(in s name, + in s new_name); + CloneImage(in s name, + in s new_name, + in b read_only); + MarkImageReadOnly(in s name, + in b read_only); + GetImageHostname(in s name, + out s hostname); + GetImageMachineID(in s name, + out ay id); + GetImageMachineInfo(in s name, + out a{ss} machine_info); + GetImageOSRelease(in s name, + out a{ss} os_release); + SetPoolLimit(in t size); + SetImageLimit(in s name, + in t size); + CleanPool(in s mode, + out a(st) images); + MapFromMachineUser(in s name, + in u uid_inner, + out u uid_outer); + MapToMachineUser(in u uid_outer, + out s machine_name, + out o machine_path, + out u uid_inner); + MapFromMachineGroup(in s name, + in u gid_inner, + out u gid_outer); + MapToMachineGroup(in u gid_outer, + out s machine_name, + out o machine_path, + out u gid_inner); + signals: + MachineNew(s machine, + o path); + MachineRemoved(s machine, + o path); + properties: + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly s PoolPath = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly t PoolUsage = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly t PoolLimit = ...; + }; + interface org.freedesktop.DBus.Peer { ... }; + interface org.freedesktop.DBus.Introspectable { ... }; + interface org.freedesktop.DBus.Properties { ... }; +}; + </programlisting> + + <!--method UnregisterMachine is not documented!--> + + <!--method OpenMachineRootDirectory is not documented!--> + + <!--method GetMachineUIDShift is not documented!--> + + <!--method GetImageHostname is not documented!--> + + <!--method GetImageMachineID is not documented!--> + + <!--method GetImageMachineInfo is not documented!--> + + <!--method GetImageOSRelease is not documented!--> + + <!--method CleanPool is not documented!--> + + <!--Autogenerated cross-references for systemd.directives, do not edit--> + + <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.machine1.Manager"/> + + <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.machine1.Manager"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetImage()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetMachineByPID()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="ListMachines()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="ListImages()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="CreateMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="CreateMachineWithNetwork()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="RegisterMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="RegisterMachineWithNetwork()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="UnregisterMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="TerminateMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="KillMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetMachineAddresses()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetMachineOSRelease()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="OpenMachinePTY()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="OpenMachineLogin()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="OpenMachineShell()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="BindMountMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="CopyFromMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="CopyToMachine()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="OpenMachineRootDirectory()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetMachineUIDShift()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="RemoveImage()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="RenameImage()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="CloneImage()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="MarkImageReadOnly()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetImageHostname()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetImageMachineID()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetImageMachineInfo()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetImageOSRelease()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="SetPoolLimit()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="SetImageLimit()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="CleanPool()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="MapFromMachineUser()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="MapToMachineUser()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="MapFromMachineGroup()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="MapToMachineGroup()"/> + + <variablelist class="dbus-signal" generated="True" extra-ref="MachineNew"/> + + <variablelist class="dbus-signal" generated="True" extra-ref="MachineRemoved"/> + + <variablelist class="dbus-property" generated="True" extra-ref="PoolPath"/> + + <variablelist class="dbus-property" generated="True" extra-ref="PoolUsage"/> + + <variablelist class="dbus-property" generated="True" extra-ref="PoolLimit"/> + + <!--End of Autogenerated section--> + + <refsect2> + <title>Methods</title> + + <para><function>GetMachine()</function> may be used to get the machine object path for the machine with + the specified name. Similarly, <function>GetMachineByPID()</function> gets the machine object the + specified PID belongs to if there is any.</para> + + <para><function>GetImage()</function> may be used to get the image object path of the image with the + specified name.</para> + + <para><function>ListMachines()</function> returns an array of all currently registered machines. The + structures in the array consist of the following fields: machine name, machine class, an identifier for + the service that registered the machine and the machine object path.</para> + + <para><function>ListImages()</function> returns an array of all currently known images. The + structures in the array consist of the following fields: image name, type, read-only flag, creation + time, modification time, current disk space, and image object path.</para> + + <para><function>CreateMachine()</function> may be used to register a new virtual machine or container + with <command>systemd-machined</command>, creating a scope unit for it. It accepts the following arguments: a + machine name chosen by the registrar, an optional UUID as a 32 byte array, a string that identifies the + service that registers the machine, a class string, the PID of the leader process of the machine, an + optional root directory of the container, and an array of additional properties to use for the scope + registration. The virtual machine name must be suitable as a hostname, and hence should follow the usual + DNS hostname rules, as well as the Linux hostname restrictions. Specifically, only 7 bit ASCII is + permitted, a maximum length of 64 characters is enforced, only characters from the set + <literal>a-zA-Z0-9-_.</literal> are allowed, the name may not begin with a dot, and it may not contain + two dots immediately following each other. Container and VM managers should ideally use the hostname + used internally in the machine for this parameter. This recommendation is made in order to make the + machine name naturally resolvable using + <citerefentry><refentrytitle>nss-mymachines</refentrytitle><manvolnum>8</manvolnum></citerefentry>. If + a container manager needs to embed characters outside of the indicated range, escaping is required, + possibly using <literal>_</literal> as the escape character. Another (somewhat natural) option would be + to utilize Internet IDNA encoding. The UUID is passed as a 32 byte array or, if no suitable UUID is + available, an empty array (zero length) or zeroed out array shall be passed. The UUID should identify + the virtual machine/container uniquely and should ideally be the same UUID that + <filename>/etc/machine-id</filename> in the VM/container is initialized from. The service string can be + free-form, but it is recommended to pass a short lowercase identifier like + <literal>systemd-nspawn</literal>, <literal>libvirt-lxc</literal> or similar. The class string should + be either <literal>container</literal> or <literal>vm</literal> indicating whether the machine to + register is of the respective class. The leader PID should be the host PID of the init process of the + container or the encapsulating process of the VM. If the root directory of the container is known and + available in the host's hierarchy, it should be passed. Otherwise, pass the empty string instead. Finally, the + scope properties are passed as array in the same way as to PID1's + <function>StartTransientUnit()</function> method. Calling this method will internally register a transient scope + unit for the calling client (utilizing the passed scope_properties) and move the leader PID into + it. The method returns an object path for the registered machine object that implements the + <interfacename>org.freedesktop.machine1.Machine</interfacename> interface (see below). Also see the + <ulink url="https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">New Control Group + Interfaces</ulink> for details about scope units and how to alter resource control settings on the + created machine at runtime.</para> + + <para><function>RegisterMachine()</function> is similar to <function>CreateMachine()</function>. + However, it only registers a machine and does not create a scope unit for it. Instead, the caller's unit is + registered. We recommend to only use this method for container or VM managers that are run + multiple times, one instance for each container/VM they manage, and are invoked as system + services.</para> + + <para><function>CreateMachineWithNetwork()</function> and + <function>RegisterMachineWithNetwork()</function> are similar to <function>CreateMachine()</function> + and <function>RegisterMachine()</function> but take an extra argument: an array of network interface + indices that point towards the virtual machine or container. The interface indices should reference one + or more network interfaces on the host that can be used to communicate with the guest. Commonly, the + passed interface index refers to the host side of a "veth" link (in case of containers), a + "tun"/"tap" link (in case of VMs), or the host side of a bridge interface that bridges access to the + VM/container interfaces. Specifying this information is useful to enable support for link-local IPv6 + communication to the machines since the scope field of sockaddr_in6 can be initialized by the + specified ifindex. + <citerefentry><refentrytitle>nss-mymachines</refentrytitle><manvolnum>8</manvolnum></citerefentry> + makes use of this information.</para> + + <para><function>KillMachine()</function> sends a UNIX signal to the machine's processes. As its arguments, it takes a + machine name (as originally passed to <function>CreateMachine()</function> or returned by + <function>ListMachines()</function>), an identifier that specifies what precisely to send the signal to (either + <literal>leader</literal> or <literal>all</literal>), and a numeric UNIX signal integer.</para> + + <para><function>TerminateMachine()</function> terminates a virtual machine, killing its processes. It + takes a machine name as its only argument.</para> + + <para><function>GetMachineAddresses()</function> retrieves the IP addresses of a container. This method + returns an array of pairs consisting of an address family specifier (<constant>AF_INET</constant> or + <constant>AF_INET6</constant>) and a byte array containing the addresses. This is only supported for + containers that make use of network namespacing.</para> + + <para><function>GetMachineOSRelease()</function> retrieves the OS release information of a + container. This method returns an array of key value pairs read from the + <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry> file in + the container and is useful to identify the operating system used in a container.</para> + + <para><function>OpenMachinePTY()</function> allocates a pseudo TTY in the container and returns a file + descriptor and its path. This is equivalent to transitioning into the container and invoking + <citerefentry project="man-pages"><refentrytitle>posix_openpt</refentrytitle><manvolnum>3</manvolnum></citerefentry>. + </para> + + <para><function>OpenMachineLogin()</function> allocates a pseudo TTY in the container and ensures that + a getty login prompt of the container is running on the other end. It returns the file descriptor of + the PTY and the PTY path. This is useful for acquiring a pty with a login prompt from the + container.</para> + + <para><function>OpenMachineShell()</function> allocates a pseudo TTY in the container, as the specified + user, and invokes the executable at the specified path with a list of arguments (starting from + argv[0]) and an environment block. It then returns the file descriptor of the PTY and the PTY + path.</para> + + <para><function>BindMountMachine()</function> bind mounts a file or directory from the host into the + container. Its arguments consist of a machine name, the source directory on the host, the destination directory in the + container, and two booleans, one indicating whether the bind mount shall be + read-only, the other indicating whether the destination mount point shall be created first, if it is + missing.</para> + + <para><function>CopyFromMachine()</function> copies files or directories from a container into the + host. It takes a container name, a source directory in the container and a destination directory on the + host as arguments. <function>CopyToMachine()</function> does the opposite and copies files from a source + directory on the host into a destination directory in the container.</para> + + <para><function>RemoveImage()</function> removes the image with the specified name.</para> + + <para><function>RenameImage()</function> renames the specified image.</para> + + <para><function>CloneImage()</function> clones the specified image under a new name. It also takes a + boolean argument indicating whether the resulting image shall be read-only or not.</para> + + <para><function>MarkImageReadOnly()</function> toggles the read-only flag of an image.</para> + + <para><function>SetPoolLimit()</function> sets an overall quota limit on the pool of images.</para> + + <para><function>SetImageLimit()</function> sets a per-image quota limit.</para> + + <para><function>MapFromMachineUser()</function>, <function>MapToMachineUser()</function>, + <function>MapFromMachineGroup()</function>, and <function>MapToMachineGroup()</function> may be used to map + UIDs/GIDs from the host user namespace to a container user namespace or vice versa.</para> + </refsect2> + + <refsect2> + <title>Signals</title> + + <para><function>MachineNew</function> and <function>MachineRemoved</function> are sent whenever a new + machine is registered or removed. These signals carry the machine name and the object path to the corresponding + <interfacename>org.freedesktop.machine1.Machine</interfacename> interface (see below).</para> + </refsect2> + + <refsect2> + <title>Properties</title> + + <para><varname>PoolPath</varname> specifies the file system path where images are written to.</para> + + <para><varname>PoolUsage</varname> specifies the current usage size of the image pool in bytes.</para> + + <para><varname>PoolLimit</varname> specifies the size limit of the image pool in bytes.</para> + </refsect2> + </refsect1> + + <refsect1> + <title>Machine Objects</title> + + <programlisting executable="systemd-machined" node="/org/freedesktop/machine1/machine/rawhide" interface="org.freedesktop.machine1.Machine"> +node /org/freedesktop/machine1/machine/rawhide { + interface org.freedesktop.machine1.Machine { + methods: + Terminate(); + Kill(in s who, + in i signal); + GetAddresses(out a(iay) addresses); + GetOSRelease(out a{ss} fields); + GetUIDShift(out u shift); + OpenPTY(out h pty, + out s pty_path); + OpenLogin(out h pty, + out s pty_path); + OpenShell(in s user, + in s path, + in as args, + in as environment, + out h pty, + out s pty_path); + BindMount(in s source, + in s destination, + in b read_only, + in b mkdir); + CopyFrom(in s source, + in s destination); + CopyTo(in s source, + in s destination); + OpenRootDirectory(out h fd); + properties: + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly s Name = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly ay Id = [...]; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly t Timestamp = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly t TimestampMonotonic = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly s Service = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly s Unit = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly u Leader = ...; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly s Class = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly s RootDirectory = '...'; + @org.freedesktop.DBus.Property.EmitsChangedSignal("const") + readonly ai NetworkInterfaces = [...]; + @org.freedesktop.DBus.Property.EmitsChangedSignal("false") + readonly s State = '...'; + }; + interface org.freedesktop.DBus.Peer { ... }; + interface org.freedesktop.DBus.Introspectable { ... }; + interface org.freedesktop.DBus.Properties { ... }; +}; + </programlisting> + + <!--method GetUIDShift is not documented!--> + + <!--method OpenPTY is not documented!--> + + <!--method OpenLogin is not documented!--> + + <!--method OpenShell is not documented!--> + + <!--method BindMount is not documented!--> + + <!--method CopyFrom is not documented!--> + + <!--method CopyTo is not documented!--> + + <!--method OpenRootDirectory is not documented!--> + + <!--Autogenerated cross-references for systemd.directives, do not edit--> + + <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.machine1.Machine"/> + + <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.machine1.Machine"/> + + <variablelist class="dbus-method" generated="True" extra-ref="Terminate()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="Kill()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetAddresses()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetOSRelease()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="GetUIDShift()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="OpenPTY()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="OpenLogin()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="OpenShell()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="BindMount()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="CopyFrom()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="CopyTo()"/> + + <variablelist class="dbus-method" generated="True" extra-ref="OpenRootDirectory()"/> + + <variablelist class="dbus-property" generated="True" extra-ref="Name"/> + + <variablelist class="dbus-property" generated="True" extra-ref="Id"/> + + <variablelist class="dbus-property" generated="True" extra-ref="Timestamp"/> + + <variablelist class="dbus-property" generated="True" extra-ref="TimestampMonotonic"/> + + <variablelist class="dbus-property" generated="True" extra-ref="Service"/> + + <variablelist class="dbus-property" generated="True" extra-ref="Unit"/> + + <variablelist class="dbus-property" generated="True" extra-ref="Leader"/> + + <variablelist class="dbus-property" generated="True" extra-ref="Class"/> + + <variablelist class="dbus-property" generated="True" extra-ref="RootDirectory"/> + + <variablelist class="dbus-property" generated="True" extra-ref="NetworkInterfaces"/> + + <variablelist class="dbus-property" generated="True" extra-ref="State"/> + + <!--End of Autogenerated section--> + + <refsect2> + <title>Methods</title> + + <para><function>Terminate()</function> and <function>Kill()</function> terminate/kill the machine. These methods + take the same arguments as <function>TerminateMachine()</function> and + <function>KillMachine()</function> on the Manager interface, respectively.</para> + + <para><function>GetAddresses()</function> and <function>GetOSRelease()</function> get the IP address and OS + release information from the machine. These methods take the same arguments as + <function>GetMachineAddresses()</function> and <function>GetMachineOSRelease()</function> of the + Manager interface, respectively.</para> + </refsect2> + + <refsect2> + <title>Properties</title> + + <para><varname>Name</varname> is the machine name as it was passed in during registration with + <function>CreateMachine()</function> on the manager object.</para> + + <para><varname>Id</varname> is the machine UUID.</para> + + <para><varname>Timestamp</varname> and <varname>TimestampMonotonic</varname> are the realtime and + monotonic timestamps when the virtual machines where created in microseconds since the epoch.</para> + + <para><varname>Service</varname> contains a short string identifying the registering service as passed + in during registration of the machine.</para> + + <para><varname>Unit</varname> is the systemd scope or service unit name for the machine.</para> + + <para><varname>Leader</varname> is the PID of the leader process of the machine.</para> + + <para><varname>Class</varname> is the class of the machine and is either the string "vm" (for real VMs + based on virtualized hardware) or "container" (for light-weight userspace virtualization sharing the + same kernel as the host).</para> + + <para><varname>RootDirectory</varname> is the root directory of the container if it is known and + applicable or the empty string.</para> + + <para><varname>NetworkInterfaces</varname> contains an array of network interface indices that point + towards the container, the VM or the host. For details about this information see the description of + <function>CreateMachineWithNetwork()</function> above.</para> + + <para><varname>State</varname> is the state of the machine and is one of <literal>opening</literal>, + <literal>running</literal>, or <literal>closing</literal>. Note that the state machine is not considered + part of the API and states might be removed or added without this being considered API breakage. + </para> + </refsect2> + </refsect1> + + <refsect1> + <title>Examples</title> + + <example> + <title>Introspect <interfacename>org.freedesktop.machine1.Manager</interfacename> on the bus</title> + + <programlisting> +$ gdbus introspect --system \ + --dest org.freedesktop.machine1 \ + --object-path /org/freedesktop/machine1 + </programlisting> + </example> + + <example> + <title>Introspect <interfacename>org.freedesktop.machine1.Machine</interfacename> on the bus</title> + + <programlisting> +$ gdbus introspect --system \ + --dest org.freedesktop.machine1 \ + --object-path /org/freedesktop/machine1/machine/rawhide + </programlisting> + </example> + </refsect1> + + <refsect1> + <title>Versioning</title> + + <para>These D-Bus interfaces follow <ulink url="http://0pointer.de/blog/projects/versioning-dbus.html"> + the usual interface versioning guidelines</ulink>.</para> + </refsect1> +</refentry> |