varlink: add new io.systemd.Job interface
This commit creates a new varlink-io.systemd.Job.c file and puts the job related varlink types into this file. Those will be used by the upcoming io.systemd.Unit.StartTransient. Note that the property names follow the D-Bus naming to make a future "systemctl show" transition from D-Bus -> varlink easier. Thanks to @ikruglov for suggesting this preparation commit and to Lennart for suggesting the D-Bus compatibility considerations.
This commit is contained in:
@@ -223,6 +223,7 @@ shared_sources = files(
|
||||
'varlink-io.systemd.Hostname.c',
|
||||
'varlink-io.systemd.Import.c',
|
||||
'varlink-io.systemd.InstanceMetadata.c',
|
||||
'varlink-io.systemd.Job.c',
|
||||
'varlink-io.systemd.Journal.c',
|
||||
'varlink-io.systemd.JournalAccess.c',
|
||||
'varlink-io.systemd.Login.c',
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "varlink-io.systemd.Job.h"
|
||||
|
||||
/* Keep in sync with job_type_table[] in src/core/job.c */
|
||||
SD_VARLINK_DEFINE_ENUM_TYPE(
|
||||
JobType,
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(start),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(verify_active),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(stop),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(reload),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(reload_or_start),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(restart),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(try_restart),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(try_reload),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(nop));
|
||||
|
||||
/* Keep in sync with job_state_table[] in src/core/job.c */
|
||||
SD_VARLINK_DEFINE_ENUM_TYPE(
|
||||
JobState,
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(waiting),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(running),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(finished));
|
||||
|
||||
/* Keep in sync with job_result_table[] in src/core/job.c */
|
||||
SD_VARLINK_DEFINE_ENUM_TYPE(
|
||||
JobResult,
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(done),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(canceled),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(timeout),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(failed),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(dependency),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(skipped),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(invalid),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(assert),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(unsupported),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(collected),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(once),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(frozen),
|
||||
SD_VARLINK_DEFINE_ENUM_VALUE(concurrency));
|
||||
|
||||
/* Field names match the D-Bus Job properties (Id, JobType, State) */
|
||||
SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
Job,
|
||||
SD_VARLINK_FIELD_COMMENT("The numeric job ID"),
|
||||
SD_VARLINK_DEFINE_FIELD(Id, SD_VARLINK_INT, 0),
|
||||
SD_VARLINK_FIELD_COMMENT("The job type"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(JobType, JobType, 0),
|
||||
SD_VARLINK_FIELD_COMMENT("Current job state, set in intermediate streaming notifications"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(State, JobState, SD_VARLINK_NULLABLE),
|
||||
SD_VARLINK_FIELD_COMMENT("Final job result, set in the final streaming reply"),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(Result, JobResult, SD_VARLINK_NULLABLE));
|
||||
|
||||
SD_VARLINK_DEFINE_INTERFACE(
|
||||
io_systemd_Job,
|
||||
"io.systemd.Job",
|
||||
SD_VARLINK_INTERFACE_COMMENT("Job-related types for the systemd service manager."),
|
||||
SD_VARLINK_SYMBOL_COMMENT("Job type"),
|
||||
&vl_type_JobType,
|
||||
SD_VARLINK_SYMBOL_COMMENT("Job state"),
|
||||
&vl_type_JobState,
|
||||
SD_VARLINK_SYMBOL_COMMENT("Job result"),
|
||||
&vl_type_JobResult,
|
||||
SD_VARLINK_SYMBOL_COMMENT("A job object"),
|
||||
&vl_type_Job);
|
||||
@@ -0,0 +1,10 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "sd-varlink-idl.h"
|
||||
|
||||
extern const sd_varlink_symbol vl_type_JobType;
|
||||
extern const sd_varlink_symbol vl_type_JobState;
|
||||
extern const sd_varlink_symbol vl_type_JobResult;
|
||||
extern const sd_varlink_symbol vl_type_Job;
|
||||
extern const sd_varlink_interface vl_interface_io_systemd_Job;
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "varlink-io.systemd.Hostname.h"
|
||||
#include "varlink-io.systemd.Import.h"
|
||||
#include "varlink-io.systemd.InstanceMetadata.h"
|
||||
#include "varlink-io.systemd.Job.h"
|
||||
#include "varlink-io.systemd.Journal.h"
|
||||
#include "varlink-io.systemd.JournalAccess.h"
|
||||
#include "varlink-io.systemd.Login.h"
|
||||
@@ -192,6 +193,7 @@ TEST(parse_format) {
|
||||
&vl_interface_io_systemd_Hostname,
|
||||
&vl_interface_io_systemd_Import,
|
||||
&vl_interface_io_systemd_InstanceMetadata,
|
||||
&vl_interface_io_systemd_Job,
|
||||
&vl_interface_io_systemd_Journal,
|
||||
&vl_interface_io_systemd_JournalAccess,
|
||||
&vl_interface_io_systemd_Login,
|
||||
|
||||
Reference in New Issue
Block a user