25 Wt::WContainerWidget* parent = 0);
28 class LogFileResource :
public Wt::WResource
33 void set_last_log(
const std::string& log) { last_log_ = log; }
35 void handleRequest(
const Wt::Http::Request& request, Wt::Http::Response& response)
override
37 suggestFileName(
"jaiabot_upgrade_ansible_log_ " + goby::time::file_str() +
".json");
38 response.addHeader(
"Content-Type",
"text/plain");
39 response.out() << last_log_;
43 std::string last_log_;
48 AnsiblePlaybookConfig(
const jaiabot::protobuf::UpgradeConfig::AnsiblePlaybook& playbook,
49 LiaisonUpgrade* parent, std::size_t playbook_index);
50 AnsiblePlaybookConfig() =
delete;
51 AnsiblePlaybookConfig(
const AnsiblePlaybookConfig&) =
delete;
52 AnsiblePlaybookConfig(AnsiblePlaybookConfig&&) =
default;
55 Wt::WGroupBox* group_box;
56 Wt::WContainerWidget* group_div;
57 Wt::WContainerWidget* iv_group_div;
58 Wt::WContainerWidget* run_button_div;
59 Wt::WPushButton* run_button;
60 Wt::WContainerWidget* log_button_div;
61 Wt::WPushButton* log_button;
62 Wt::WContainerWidget* result_div;
63 Wt::WText* result_text;
64 Wt::WTable* result_table;
65 std::vector<std::string>::const_iterator run_text_it;
67 std::map<std::string, std::string> input_var;
69 std::map<std::string, std::string> output_var;
70 std::vector<std::string> output_var_order;
74 ProcessData(
const protobuf::UpgradeConfig& cfg,
const std::string& playbook_file,
75 const jaiabot::protobuf::UpgradeConfig::AnsiblePlaybook& pb_playbook,
76 const std::string& input_vars);
79 boost::asio::io_service
io;
85 std::unique_ptr<ProcessData> pdata;
87 std::shared_ptr<LogFileResource> log_resource;
88 const jaiabot::protobuf::UpgradeConfig::AnsiblePlaybook& pb_playbook;
100 ResultType result{SUCCESS};
101 std::map<std::string, std::string> output_vars;
104 void run_ansible_playbook(std::size_t playbook_index);
105 void set_input_var(
int selection_index, Wt::WComboBox* selection, std::string name,
106 std::size_t playbook_index);
108 void process_ansible_json_result(nlohmann::json j, AnsiblePlaybookConfig& playbook);
111 void focus()
override { timer_.start(); }
112 void unfocus()
override { timer_.stop(); }
115 const protobuf::UpgradeConfig& cfg_;
116 std::vector<AnsiblePlaybookConfig> playbooks_;
118 static const std::vector<std::string> running_;
119 static const Wt::WColor color_success_;
120 static const Wt::WColor color_failure_;