Skip to content
Snippets Groups Projects
Commit ac214930 authored by Frederic Danis's avatar Frederic Danis
Browse files

Add feedback support to AhaHawkbitDeploymentBase object


During deployment, hawkBit agent may send feedback information to the
update server.
The deployment should end wit a feedback message of success or failure,
with execution set to closed.

Signed-off-by: default avatarFrédéric Danis <frederic.danis@collabora.com>
parent 0727f379
No related branches found
No related tags found
1 merge request!1Initial support for Apertis hawkBit agent
......@@ -224,3 +224,61 @@ aha_hawkbit_deployment_base_get_update_filename (AhaHawkbitDeploymentBase *self)
return g_strdup (self->update_filename);
}
void
aha_hawkbit_deployment_base_send_feedback (AhaHawkbitDeploymentBase *self,
gchar *finished,
gchar *execution,
gchar *details)
{
g_autoptr (SoupMessage) msg;
guint status;
JsonBuilder *builder = json_builder_new ();
json_builder_begin_object (builder);
json_builder_set_member_name (builder, "id");
json_builder_add_string_value (builder, self->deployment_id);
json_builder_set_member_name (builder, "status");
json_builder_begin_object (builder);
json_builder_set_member_name (builder, "result");
json_builder_begin_object (builder);
json_builder_set_member_name (builder, "finished");
json_builder_add_string_value (builder, finished);
json_builder_end_object (builder);
json_builder_set_member_name (builder, "execution");
json_builder_add_string_value (builder, execution);
if (details != NULL)
{
json_builder_set_member_name (builder, "details");
json_builder_begin_array (builder);
json_builder_add_string_value (builder, details);
json_builder_end_array (builder);
}
json_builder_end_object (builder);
json_builder_end_object (builder);
JsonGenerator *gen = json_generator_new ();
JsonNode * root = json_builder_get_root (builder);
json_generator_set_root (gen, root);
g_autofree gchar *str = json_generator_to_data (gen, NULL);
json_node_free (root);
g_object_unref (gen);
g_object_unref (builder);
g_autofree gchar *r = g_strdup_printf("/deploymentBase/%s/feedback",
self->deployment_id);
msg = aha_hawkbit_session_create_message(self->session, SOUP_METHOD_POST, r);
soup_message_headers_append (msg->request_headers,
"Accept", "application/hal+json");
soup_message_set_request (msg, "application/json;charset=UTF-8",
SOUP_MEMORY_COPY, str, strlen (str));
status = soup_session_send_message (
aha_hawkbit_session_get_soup_session (self->session),
msg);
g_print("=> %d\n", status);
g_print("=> %s\n", msg->response_body->data);
}
......@@ -26,6 +26,17 @@ G_DECLARE_FINAL_TYPE (AhaHawkbitDeploymentBase,
HAWKBIT_DEPLOYMENT_BASE,
GObject)
#define AHA_DEPLOYMENT_BASE_FEEDBACK_FINISHED_SUCCESS "success"
#define AHA_DEPLOYMENT_BASE_FEEDBACK_FINISHED_FAILURE "failure"
#define AHA_DEPLOYMENT_BASE_FEEDBACK_FINISHED_NONE "none"
#define AHA_DEPLOYMENT_BASE_FEEDBACK_EXECUTION_CLOSED "closed"
#define AHA_DEPLOYMENT_BASE_FEEDBACK_EXECUTION_PROCEEDING "proceeding"
#define AHA_DEPLOYMENT_BASE_FEEDBACK_EXECUTION_CANCELED "canceled"
#define AHA_DEPLOYMENT_BASE_FEEDBACK_EXECUTION_SCHEDULED "scheduled"
#define AHA_DEPLOYMENT_BASE_FEEDBACK_EXECUTION_REJECTED "rejected"
#define AHA_DEPLOYMENT_BASE_FEEDBACK_EXECUTION_RESUMED "resumed"
void
aha_hawkbit_deployment_base_update (AhaHawkbitDeploymentBase *self);
......@@ -35,7 +46,12 @@ aha_hawkbit_deployment_base_get_update_uri (AhaHawkbitDeploymentBase *self);
gchar *
aha_hawkbit_deployment_base_get_update_filename (AhaHawkbitDeploymentBase *self);
void
aha_hawkbit_deployment_base_send_feedback (AhaHawkbitDeploymentBase *self,
gchar *finished,
gchar *execution,
gchar *details);
G_END_DECLS
#endif /* __AHA_HAWKBIT_DEPLOYMENT_BASE_H__ */
......@@ -169,7 +169,7 @@ aha_hawkbit_session_create_message_for_uri (AhaHawkbitSession *self,
const gchar *method,
const gchar *uri)
{
SoupMessage *msg = soup_message_new (SOUP_METHOD_GET, uri);
SoupMessage *msg = soup_message_new (method, uri);
g_autofree gchar *t = g_strdup_printf("TargetToken %s", self->key_token);
soup_message_headers_append (msg->request_headers, "Authorization", t);
......
......@@ -128,7 +128,17 @@ main(int argc, char **argv) {
if (u_uri == NULL)
return 0;
aha_hawkbit_deployment_base_send_feedback(d_base,
AHA_DEPLOYMENT_BASE_FEEDBACK_FINISHED_NONE,
AHA_DEPLOYMENT_BASE_FEEDBACK_EXECUTION_PROCEEDING,
"downloading");
download_uri (hb_session, u_uri, u_filename);
aha_hawkbit_deployment_base_send_feedback(d_base,
AHA_DEPLOYMENT_BASE_FEEDBACK_FINISHED_SUCCESS,
AHA_DEPLOYMENT_BASE_FEEDBACK_EXECUTION_CLOSED,
NULL);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment