chiark / gitweb /
core: add support to run transient units in arbitrary slices
[elogind.git] / src / core / dbus-unit.c
index 6273e4627432e4d8cdba832583de3c4736b2c04b..ad6d5a603885694ab13c0f9829438c60167e0fd0 100644 (file)
@@ -790,6 +790,25 @@ static int bus_unit_set_transient_property(
                         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, &s);
+
+                r = manager_load_unit(u->manager, s, NULL, error, &slice);
+                if (r < 0)
+                        return r;
+
+                if (slice->type != UNIT_SLICE)
+                        return -EINVAL;
+
+                unit_ref_set(&u->slice, slice);
+                return 1;
         }
 
         return 0;