• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eclipse-bluechi / bluechi / 16572578197

28 Jul 2025 03:00PM UTC coverage: 70.652% (-3.8%) from 74.418%
16572578197

push

github

engelmi
Release BlueChi v1.1.0

Signed-off-by: Michael Engel <mengel@redhat.com>

4858 of 6876 relevant lines covered (70.65%)

947.13 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

56.82
/src/client/method-unit-lifecycle.c
1
/*
2
 * Copyright Contributors to the Eclipse BlueChi project
3
 *
4
 * SPDX-License-Identifier: LGPL-2.1-or-later
5
 */
6
#include "method-unit-lifecycle.h"
7
#include "client.h"
8
#include "usage.h"
9

10
#include "libbluechi/common/opt.h"
11

12
static int method_lifecycle_action_on(Client *client, char *node_name, char *unit, char *method) {
19✔
13
        _cleanup_sd_bus_error_ sd_bus_error error = SD_BUS_ERROR_NULL;
×
14
        _cleanup_sd_bus_message_ sd_bus_message *message = NULL;
19✔
15
        _cleanup_sd_bus_message_ sd_bus_message *job_result = NULL;
×
16
        char *job_path = NULL, *result = NULL, *node = NULL;
19✔
17
        uint32_t id = 0;
19✔
18
        int r = 0;
19✔
19

20
        r = assemble_object_path_string(NODE_OBJECT_PATH_PREFIX, node_name, &client->object_path);
19✔
21
        if (r < 0) {
19✔
22
                return r;
23
        }
24

25
        r = sd_bus_match_signal(
19✔
26
                        client->api_bus,
27
                        NULL,
28
                        BC_INTERFACE_BASE_NAME,
29
                        BC_CONTROLLER_OBJECT_PATH,
30
                        CONTROLLER_INTERFACE,
31
                        "JobRemoved",
32
                        match_job_removed_signal,
33
                        client);
34

35
        if (r < 0) {
19✔
36
                fprintf(stderr, "Failed to match signal\n");
×
37
                return r;
38
        }
39

40
        r = sd_bus_call_method(
38✔
41
                        client->api_bus,
42
                        BC_INTERFACE_BASE_NAME,
43
                        client->object_path,
19✔
44
                        NODE_INTERFACE,
45
                        method,
46
                        &error,
47
                        &message,
48
                        "ss",
49
                        unit,
50
                        "replace");
51
        if (r < 0) {
19✔
52
                fprintf(stderr, "Failed to issue method call: %s\n", error.message);
×
53
                return r;
54
        }
55

56
        r = sd_bus_message_read(message, "o", &job_path);
19✔
57
        if (r < 0) {
19✔
58
                fprintf(stderr, "Failed to parse response message: %s\n", strerror(-r));
×
59
                return r;
60
        }
61

62
        job_result = client_wait_for_job(client, job_path);
19✔
63
        if (job_result == NULL) {
19✔
64
                return -EIO;
65
        }
66

67
        r = sd_bus_message_read(job_result, "uosss", &id, &job_path, &node, &unit, &result);
19✔
68
        if (r < 0) {
19✔
69
                fprintf(stderr, "Can't parse job result\n");
×
70
                return r;
71
        }
72

73
        printf("Unit %s %s operation result: %s\n", unit, method, result);
19✔
74

75
        return r;
76
}
77

78
int method_start(Command *command, void *userdata) {
14✔
79
        return method_lifecycle_action_on(userdata, command->opargv[0], command->opargv[1], "StartUnit");
14✔
80
}
81

82
int method_stop(Command *command, void *userdata) {
4✔
83
        return method_lifecycle_action_on(userdata, command->opargv[0], command->opargv[1], "StopUnit");
4✔
84
}
85

86
int method_restart(Command *command, void *userdata) {
1✔
87
        return method_lifecycle_action_on(userdata, command->opargv[0], command->opargv[1], "RestartUnit");
1✔
88
}
89

90
int method_reload(Command *command, void *userdata) {
×
91
        return method_lifecycle_action_on(userdata, command->opargv[0], command->opargv[1], "ReloadUnit");
×
92
}
93

94
void usage_method_lifecycle() {
×
95
        usage_print_header();
×
96
        usage_print_description("Start/Stop/Restart/Reload a unit on a node");
×
97
        usage_print_usage("bluechictl [start|stop|restart|reload] [nodename] [unitname]");
×
98
        printf("\n");
×
99
        printf("Examples:\n");
×
100
        printf("  bluechictl start primary interesting.service\n");
×
101
        printf("  bluechictl stop primary interesting.service\n");
×
102
        printf("  bluechictl restart primary interesting.service\n");
×
103
        printf("  bluechictl reload primary interesting.service\n");
×
104
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc