Skip to content

Commit

Permalink
Add support for artifacts in UI
Browse files Browse the repository at this point in the history
  • Loading branch information
benoit74 committed Feb 22, 2024
1 parent 4ed2da5 commit 9d4ff36
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 3 deletions.
5 changes: 5 additions & 0 deletions dispatcher/frontend-ui/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,11 @@
.then(function (response) {
// parent.error = null;
let schedule = response.data;
if (schedule.config.artifacts_globs) {
schedule.config.artifacts_globs_str = schedule.config.artifacts_globs.join("\n")
}
parent.$store.dispatch('setSchedule', schedule);
if (on_success) { on_success(); }
Expand Down
20 changes: 20 additions & 0 deletions dispatcher/frontend-ui/src/components/ScheduleEditor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,17 @@
</b-col>
</b-row>

<b-row>
<b-col>
<b-form-group label="Artifacts:"
label-for="artifacts"
description="Globs of artifacts to archive, one glob expression per line.">
<b-form-textarea id="artifacts"
v-model="edit_schedule.config.artifacts_globs_str"></b-form-textarea>
</b-form-group>
</b-col>
</b-row>

<hr />

<b-row v-if="edit_flags_fields.length > 0"><b-col><h2><code>{{ edit_task_name}}</code> command flags</h2></b-col></b-row>
Expand Down Expand Up @@ -435,6 +446,15 @@
payload.resources = parent.edit_schedule.config.resources;
}
// artifacts globs needs to be transformed into a real list
let new_artifacts_globs = null;
if (parent.edit_schedule.config.artifacts_globs_str && parent.edit_schedule.config.artifacts_globs_str.trim() !== "") {
new_artifacts_globs = parent.edit_schedule.config.artifacts_globs_str.split(/\r?\n/).map(s => s.trim()).filter(Boolean);
}
if (new_artifacts_globs != parent.schedule.config.artifacts_globs) {
payload.artifacts_globs = new_artifacts_globs;
}
if (this.flags_payload)
Object.assign(payload, {"flags": this.flags_payload});
Expand Down
15 changes: 12 additions & 3 deletions dispatcher/frontend-ui/src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,15 @@ function image_url(config) {
}

function logs_url(task) {
let url = new URL(task.upload.logs.upload_uri);
return upload_url(task.upload.logs.upload_uri, task.container.log)
}

function artifacts_url(task) {
return upload_url(task.upload.artifacts.upload_uri, task.container.artifacts)
}

function upload_url(uri, filename) {
let url = new URL(uri);
let scheme = url.protocol.replace(/:$/, "");

if (["http", "https"].indexOf(scheme) == -1)
Expand All @@ -124,10 +132,10 @@ function logs_url(task) {
let bucketName = url.searchParams.get("bucketName");
if (bucketName)
log_url += bucketName + "/";
return log_url + task.container.log;
return log_url + filename;
}

return task.container.log;
return filename;
}

function build_command_without(config, secret_fields) {
Expand Down Expand Up @@ -520,6 +528,7 @@ export default {
image_human: image_human,
image_url: image_url,
logs_url: logs_url,
artifacts_url: artifacts_url,
build_docker_command: build_docker_command,
build_command_without: build_command_without,
trim_command: trim_command,
Expand Down
1 change: 1 addition & 0 deletions dispatcher/frontend-ui/src/views/ScheduleView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@
<span class="badge badge-warning mr-2" v-if="config.monitor || false"><font-awesome-icon icon="bug" size="sm" /> monitored</span>
</td>
</tr>
<tr v-if="schedule.config.artifacts_globs" ><th>Artifacts</th><td><code>{{ schedule.config.artifacts_globs }}</code></td></tr>
<tr><th>Config</th><td><FlagsList :flags="config.flags" :secret_fields="secret_fields" /></td></tr>
<tr><th>Command <button class="btn btn-light btn-sm" @click.prevent="copyCommand(command)"><font-awesome-icon icon="copy" size="sm" /> Copy</button></th><td><code class="command">{{ command }}</code></td></tr>
<tr><th>Offliner Command <button class="btn btn-light btn-sm" @click.prevent="copyCommand(offliner_command)"><font-awesome-icon icon="copy" size="sm" /> Copy</button></th><td><code class="command">{{ offliner_command }}</code></td></tr>
Expand Down
2 changes: 2 additions & 0 deletions dispatcher/frontend-ui/src/views/TaskView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@
</th>
<td><pre class="stderr">{{ task_container.stderr }}</pre></td></tr>
<tr v-if="task_container.log"><th>Scraper&nbsp;Log</th><td><a class="btn btn-secondary btn-sm" target="_blank" :href="zimfarm_logs_url">Download log</a></td></tr>
<tr v-if="task_container.artifacts"><th>Scraper&nbsp;Artifacts</th><td><a class="btn btn-secondary btn-sm" target="_blank" :href="zimfarm_artifacts_url">Download artifacts</a></td></tr>
<tr v-if="task_debug.exception"><th>Exception</th><td><pre>{{ task_debug.exception }}</pre></td></tr>
<tr v-if="task_debug.traceback"><th>Traceback</th><td><pre>{{ task_debug.traceback }}</pre></td></tr>
<tr v-if="task_debug.log"><th>Task-worker Log</th><td><pre>{{ task_debug.log }}</pre></td></tr>
Expand Down Expand Up @@ -210,6 +211,7 @@
secret_fields() { return Constants.secret_fields_for(this.offliner_def); },
pipe_duration() { return Constants.format_duration_between(this.task.timestamp.requested, this.task.timestamp.started); },
zimfarm_logs_url() { return Constants.logs_url(this.task); },
zimfarm_artifacts_url() { return Constants.artifacts_url(this.task); },
kiwix_download_url() { return Constants.kiwix_download_url; },
webapi_url() { return Constants.zimfarm_webapi; },
command() { return this.task_container.command.join(" "); },
Expand Down

0 comments on commit 9d4ff36

Please sign in to comment.