On Tue, Jan 16, 2018 at 1:52 PM, Tomasz Michalski <tmichalsk...@gmail.com>
wrote:

> Hi
> I have a problem with call methods from terminal which take an argument,
> for example when I try to use this one:
> busctl call org.freedesktop.systemd1 
> /org/freedesktop/systemd1/unit/syscom_2epath
> org.freedesktop.systemd1.Unit Kill
> I get output
> Invalid arguments '' to call org.freedesktop.systemd1.Unit.Kill(),
> expecting 'si'.
>
> The same with Restart:
> Invalid arguments '' to call org.freedesktop.systemd1.Unit.Restart(),
> expecting 's'.
>
> I know that some parameters has to be given acc to introspects:
> busctl introspect org.freedesktop.systemd1 /org/freedesktop/systemd1/
> unit/syscom_2epath
> .Result                          property  s         "success"
>
> .Unit                             property  s         "syscom.service"
>
> org.freedesktop.systemd1.Unit interface -         -
>
> .Kill                               method    si        -
>
> .Reload                         method    s         o
>
> .ReloadOrRestart          method    s         o
>
> .ReloadOrTryRestart    method    s         o
>
> .ResetFailed                 method    -         -
>
> .Restart                         method    s         o
>
> .SetProperties               method    ba(sv)    -
>
> .Start                              method    s         o
>
> .Stop                               method    s         o
>
> .TryRestart                      method    s         o
>
> However I don't know what I should exactly write, what exactly string? I
> tried for example:
> busctl call org.freedesktop.systemd1 
> /org/freedesktop/systemd1/unit/syscom_2eservice
> org.freedesktop.systemd1.Unit Restart "dupa"
> I got output:
> Too few parameters for signature.
>
> How can I get to know what exactly should I give as parameter. This is a
> bit frustrating.
>

See the API documentation at:
https://www.freedesktop.org/wiki/Software/systemd/dbus/

The Unit.Restart() call is documented as:

Restart(in s mode, out o job);


this means it takes one string parameter – the job mode.

Job mode is the same as Manager.StartUnit(), and is documented as:

The mode needs to be one of replace, fail, isolate, ignore-dependencies,
ignore-requirements. If "replace" the call will start the unit and its
dependencies, possibly replacing already queued jobs that conflict with
this. If "fail" the call will start the unit and its dependencies, but will
fail if this would change an already queued job. If "isolate" the call will
start the unit in question and terminate all units that aren't dependencies
of it. If "ignore-dependencies" it will start a unit but ignore all its
dependencies. If "ignore-requirements" it will start a unit but only ignore
the requirement dependencies. It is not recommended to make use of the
latter two options. Returns the newly created job object.


So "replace" would be an acceptable value. "dupa" is not.

Depending on the tools used, you need to declare the type of each
parameter. For example, busctl requires the "signature" (all input
parameter types together – in this case, just an "s") to be specified after
the method call; for example:

busctl call ... org.freedesktop.systemd1.Unit Restart s replace


gdbus or dbus-send each have their own, different syntax.


-- 
Mantas Mikulėnas
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to