assert(i);
if (streq(name, "Description")) {
- const char *description;
+ if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING)
+ return -EINVAL;
+
+ if (mode != UNIT_CHECK) {
+ const char *description;
+
+ dbus_message_iter_get_basic(i, &description);
+
+ r = unit_set_description(u, description);
+ if (r < 0)
+ return r;
+ }
+
+ return 1;
+
+ } else if (streq(name, "Slice") && unit_get_cgroup_context(u)) {
+ const char *s;
+ Unit *slice;
if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING)
return -EINVAL;
- dbus_message_iter_get_basic(i, &description);
+ dbus_message_iter_get_basic(i, &s);
- r = unit_set_description(u, description);
- if (r < 0)
- return r;
+ if (isempty(s)) {
+ if (mode != UNIT_CHECK)
+ unit_ref_unset(&u->slice);
+ } else {
+ r = manager_load_unit(u->manager, s, NULL, error, &slice);
+ if (r < 0)
+ return r;
+
+ if (slice->type != UNIT_SLICE)
+ return -EINVAL;
+ if (mode != UNIT_CHECK)
+ unit_ref_set(&u->slice, slice);
+ }
return 1;
}
{ "Id", bus_property_append_string, "s", offsetof(Unit, id), true },
{ "Names", bus_unit_append_names, "as", 0 },
{ "Following", bus_unit_append_following, "s", 0 },
- { "Slice", bus_unit_append_slice, "s", 0 },
{ "Requires", bus_unit_append_dependencies, "as", offsetof(Unit, dependencies[UNIT_REQUIRES]), true },
{ "RequiresOverridable", bus_unit_append_dependencies, "as", offsetof(Unit, dependencies[UNIT_REQUIRES_OVERRIDABLE]), true },
{ "Requisite", bus_unit_append_dependencies, "as", offsetof(Unit, dependencies[UNIT_REQUISITE]), true },
{ "ConditionTimestampMonotonic", bus_property_append_usec, "t", offsetof(Unit, condition_timestamp.monotonic) },
{ "ConditionResult", bus_property_append_bool, "b", offsetof(Unit, condition_result) },
{ "LoadError", bus_unit_append_load_error, "(ss)", 0 },
- { "ControlGroup", bus_property_append_string, "s", offsetof(Unit, cgroup_path), true },
{ "Transient", bus_property_append_bool, "b", offsetof(Unit, transient) },
{ NULL, }
};
+
+const BusProperty bus_unit_cgroup_properties[] = {
+ { "Slice", bus_unit_append_slice, "s", 0 },
+ { "ControlGroup", bus_property_append_string, "s", offsetof(Unit, cgroup_path), true },
+};