in t flags,
out s json);
CheckNew(out s new_version);
- Update(in s new_version,
- in t flags,
- out s new_version,
- out t job_id,
- out o job_path);
Acquire(in s new_version,
in t flags,
out s new_version,
<variablelist class="dbus-method" generated="True" extra-ref="CheckNew()"/>
- <variablelist class="dbus-method" generated="True" extra-ref="Update()"/>
-
<variablelist class="dbus-method" generated="True" extra-ref="Acquire()"/>
<variablelist class="dbus-method" generated="True" extra-ref="Install()"/>
<listitem><para>A boolean indicating whether this version is incomplete, which means that it is
missing some file. Note that only installed incomplete versions will be offered by the service;
versions that are incomplete on the server-side are completely ignored. Incomplete versions can
- be repaired in-place by calling <function>Update()</function> on that version.</para></listitem>
+ be repaired in-place by calling <function>Acquire()</function> and <function>Install()</function>
+ on that version.</para></listitem>
</varlistentry>
<varlistentry>
<function>Describe()</function> to query more information about the version returned by this method.
</para>
- <para><function>Update()</function> installs an update for this target. If a
- <varname>new_version</varname> is specified, that is the version that gets installed. Otherwise, the
- latest version is installed. The <varname>flags</varname> argument is added for future
- extensibility. No flags are currently defined, and the argument is required to be set to
- <literal>0</literal>. Unlike all the other methods in this interface, <function>Update()</function>
- does not wait for its job to complete. Instead, it returns the job's numeric ID and object path as soon
- as the job begins, so that the caller can listen for progress updates or cancel the operation. This
- method also returns the version the target will be updated to, for cases where no version was specified
- by the caller. This method pulls both metadata and payload data from the network. Listen for the
- Manager's <function>JobRemoved()</function> signal to detect when the job is complete.</para>
-
<para><function>Acquire()</function> downloads an update for this target, if one is available. If a
<varname>new_version</varname> is specified, that is the version that gets downloaded. Otherwise, the
latest version is downloaded. Call <function>Install()</function> to install the acquired update.
preemptive decisions to be made about features that are planned to appear in future releases of the OS.
The drop-in will have a filename of <literal>50-systemd-sysupdate-enabled.conf</literal>.
This method only changes configuration files; to actually apply the changes, clients will need to
- call <function>Update()</function> (or <function>Acquire()</function> and <function>Install()</function>).
+ call <function>Acquire()</function> and <function>Install()</function>.
Depending on the exact needs of the client, it can choose to update the system to the latest available
version, or it can extend the newest existing installation in-place (by passing in the version returned
by <varname>GetVersion()</varname>).
use the polkit action <interfacename>org.freedesktop.sysupdate1.check</interfacename>.
By default, this action is permitted without administrator authentication.</para>
- <para><function>Update()</function>, <function>Acquire()</function> and <function>Install()</function>
+ <para><function>Acquire()</function> and <function>Install()</function>
use the polkit action
<interfacename>org.freedesktop.sysupdate1.update</interfacename> when no version is specified.
By default, this action is permitted without administrator authentication. When a version is
<para>The <varname>Type</varname> property exposes the type of operation (one of:
<literal>list</literal>, <literal>describe</literal>, <literal>check-new</literal>,
- <literal>update</literal>, <literal>acquire</literal>, <literal>install</literal>,
- <literal>vacuum</literal>, or <literal>describe-feature</literal>).</para>
+ <literal>acquire</literal>, <literal>install</literal>, <literal>vacuum</literal>, or
+ <literal>describe-feature</literal>).</para>
<para>The <varname>Offline</varname> property exposes whether the job is permitted to access
the network or not.</para>
<para>The <varname>Progress</varname> property exposes the current progress of the job as a value
- between 0 and 100. It is only available for <literal>update</literal>, <literal>acquire</literal> and
- <literal>install</literal> jobs; for all other jobs it is always 0.</para>
+ between 0 and 100. It is only available for <literal>acquire</literal> and <literal>install</literal>
+ jobs; for all other jobs it is always 0.</para>
</refsect2>
<refsect2>
<para><function>List()</function>,
<function>Describe()</function>,
<function>CheckNew()</function>,
- <function>Update()</function>,
<function>Acquire()</function>,
<function>Install()</function>,
<function>Vacuum()</function>,
send_interface="org.freedesktop.sysupdate1.Target"
send_member="CheckNew"/>
- <allow send_destination="org.freedesktop.sysupdate1"
- send_interface="org.freedesktop.sysupdate1.Target"
- send_member="Update"/>
-
<allow send_destination="org.freedesktop.sysupdate1"
send_interface="org.freedesktop.sysupdate1.Target"
send_member="Acquire"/>
JOB_LIST,
JOB_DESCRIBE,
JOB_CHECK_NEW,
- JOB_UPDATE,
JOB_ACQUIRE,
JOB_INSTALL,
JOB_VACUUM,
JobType type;
bool offline;
- char *version; /* Passed into sysupdate for JOB_DESCRIBE, JOB_UPDATE, JOB_ACQUIRE and JOB_INSTALL */
+ char *version; /* Passed into sysupdate for JOB_DESCRIBE, JOB_ACQUIRE and JOB_INSTALL */
char *feature; /* Passed into sysupdate for JOB_DESCRIBE_FEATURE */
unsigned progress_percent;
[JOB_LIST] = "list",
[JOB_DESCRIBE] = "describe",
[JOB_CHECK_NEW] = "check-new",
- [JOB_UPDATE] = "update",
[JOB_ACQUIRE] = "acquire",
[JOB_INSTALL] = "install",
[JOB_VACUUM] = "vacuum",
/* Is Job in the set of jobs which require Target.busy to be set so they run exclusively? */
static bool job_requires_busy(Job *j) {
- return IN_SET(j->type, JOB_UPDATE, JOB_ACQUIRE, JOB_INSTALL, JOB_VACUUM);
+ return IN_SET(j->type, JOB_ACQUIRE, JOB_INSTALL, JOB_VACUUM);
}
static int job_parse_child_output(int _fd, sd_json_variant **ret) {
cmd[k++] = "check-new";
break;
- case JOB_UPDATE:
- cmd[k++] = "update";
- cmd[k++] = empty_to_null(j->version);
- break;
-
case JOB_ACQUIRE:
cmd[k++] = "acquire";
cmd[k++] = empty_to_null(j->version);
action = "org.freedesktop.sysupdate1.check";
break;
- case JOB_UPDATE:
case JOB_ACQUIRE:
case JOB_INSTALL:
if (j->version)
return 1;
}
-static int target_method_update_finished_early(
- sd_bus_message *msg,
- const Job *j,
- sd_json_variant *json,
- sd_bus_error *error) {
-
- /* Called when job finishes w/ a successful exit code, but before any work begins.
- * This happens when there is no candidate (i.e. we're already up-to-date), or
- * specified update is already installed. */
- return sd_bus_error_setf(error, BUS_ERROR_NO_UPDATE_CANDIDATE,
- "Job exited successfully with no work to do, assume already updated");
-}
-
-static int target_method_update_detach(sd_bus_message *msg, const Job *j) {
- int r;
-
- assert(msg);
- assert(j);
-
- r = sd_bus_reply_method_return(msg, "sto", j->version, j->id, j->object_path);
- if (r < 0)
- return bus_log_parse_error(r);
-
- return 0;
-}
-
-static int target_method_update(sd_bus_message *msg, void *userdata, sd_bus_error *error) {
- Target *t = ASSERT_PTR(userdata);
- _cleanup_(job_freep) Job *j = NULL;
- const char *version, *action;
- uint64_t flags;
- int r;
-
- assert(msg);
-
- r = sd_bus_message_read(msg, "st", &version, &flags);
- if (r < 0)
- return r;
-
- if (flags != 0)
- return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Flags must be 0");
-
- if (isempty(version))
- action = "org.freedesktop.sysupdate1.update";
- else
- action = "org.freedesktop.sysupdate1.update-to-version";
-
- const char *details[] = {
- "class", target_class_to_string(t->class),
- "name", t->name,
- "version", version,
- NULL
- };
-
- r = bus_verify_polkit_async(
- msg,
- action,
- details,
- &t->manager->polkit_registry,
- error);
- if (r < 0)
- return r;
- if (r == 0)
- return 1; /* Will call us back */
-
- r = job_new(JOB_UPDATE, t, msg, target_method_update_finished_early, &j);
- if (r < 0)
- return r;
- j->detach_cb = target_method_update_detach;
-
- j->version = strdup(version);
- if (!j->version)
- return -ENOMEM;
-
- r = job_start(j);
- if (r < 0)
- return sd_bus_error_set_errnof(error, r, "Failed to start job: %m");
- TAKE_PTR(j);
-
- return 1;
-}
-
static int target_method_acquire_finished_early(
sd_bus_message *msg,
const Job *j,
target_method_check_new,
SD_BUS_VTABLE_UNPRIVILEGED),
- SD_BUS_METHOD_WITH_ARGS("Update",
- SD_BUS_ARGS("s", new_version, "t", flags),
- SD_BUS_RESULT("s", new_version, "t", job_id, "o", job_path),
- target_method_update,
- SD_BUS_VTABLE_UNPRIVILEGED),
-
SD_BUS_METHOD_WITH_ARGS("Acquire",
SD_BUS_ARGS("s", new_version, "t", flags),
SD_BUS_RESULT("s", new_version, "t", job_id, "o", job_path),