privetd: Implement privet/v3/commands/execute Privetd forwards JSON with command to buffet. Buffet updates command and returns JSON representation of the command. BUG=brillo:428 TEST=unittest Change-Id: I7bdd4a70dd94e3dc3b4a974c7ac734e44564ac6e Reviewed-on: https://chromium-review.googlesource.com/262216 Reviewed-by: Alex Vakulenko <avakulenko@chromium.org> Reviewed-by: Vitaly Buka <vitalybuka@chromium.org> Commit-Queue: Vitaly Buka <vitalybuka@chromium.org> Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/buffet_client.cc b/buffet/buffet_client.cc index 79e7cdf..355d39b 100644 --- a/buffet/buffet_client.cc +++ b/buffet/buffet_client.cc
@@ -356,7 +356,8 @@ void CallAddCommand(const std::string& command, ManagerProxy* manager_proxy) { ErrorPtr error; - if (!manager_proxy->AddCommand(command, &error)) { + std::string id; + if (!manager_proxy->AddCommand(command, &id, &error)) { return ReportError(error.get()); } OnJobComplete();
diff --git a/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml b/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml index 8b59b42..249700c 100644 --- a/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml +++ b/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
@@ -31,6 +31,7 @@ </method> <method name="AddCommand"> <arg name="json_command" type="s" direction="in"/> + <arg name="id" type="s" direction="out"/> <annotation name="org.chromium.DBus.Method.Kind" value="async"/> </method> <method name="GetCommand">
diff --git a/buffet/manager.cc b/buffet/manager.cc index 01f73b1..e486d5a 100644 --- a/buffet/manager.cc +++ b/buffet/manager.cc
@@ -165,7 +165,7 @@ return true; } -void Manager::AddCommand(DBusMethodResponse<> response, +void Manager::AddCommand(DBusMethodResponse<std::string> response, const std::string& json_command) { static int next_id = 0; std::string error_message; @@ -184,9 +184,10 @@ response->ReplyWithError(error.get()); return; } - command_instance->SetID(std::to_string(++next_id)); + std::string id = std::to_string(++next_id); + command_instance->SetID(id); command_manager_->AddCommand(std::move(command_instance)); - response->Return(); + response->Return(id); } void Manager::GetCommand(DBusMethodResponse<std::string> response,
diff --git a/buffet/manager.h b/buffet/manager.h index d61c6fa..f44e075 100644 --- a/buffet/manager.h +++ b/buffet/manager.h
@@ -68,7 +68,7 @@ // Handles calls to org.chromium.Buffet.Manager.GetState(). bool GetState(chromeos::ErrorPtr* error, std::string* state) override; // Handles calls to org.chromium.Buffet.Manager.AddCommand(). - void AddCommand(DBusMethodResponse<> response, + void AddCommand(DBusMethodResponse<std::string> response, const std::string& json_command) override; // Handles calls to org.chromium.Buffet.Manager.GetCommand(). void GetCommand(DBusMethodResponse<std::string> response,