open-nomad/ui/app/templates/allocations/allocation/task/index.hbs
Buck Doyle 6447e61078 Remove prestart tasks table
My suggestion is that this table isn’t sufficiently useful to
keep around with the combinatoric explosion of other lifecycle
phases. The logic was that someone might wonder “why isn’t my
main task starting?” and this table would show that the prestart
tasks hadn’t yet completed. One might wonder the same about
any task that has prerequisites, so should a poststart task have
a table that shows main tasks? And so on.

Since the route hierarchy guarantees that one has already passed
through a template that shows the lifecycle chart before one
can reach the template where this table is displayed, I believe
this table is redundant. It also conveys information in a more
abstract way than the chart, which is dense and more easily
understood, to me.
2020-08-26 09:58:44 -05:00

158 lines
5.3 KiB
Handlebars

{{title "Task " this.model.name}}
<TaskSubnav @task={{this.model}} />
<section class="section">
{{#if this.error}}
<div data-test-inline-error class="notification is-danger">
<div class="columns">
<div class="column">
<h3 data-test-inline-error-title class="title is-4">{{this.error.title}}</h3>
<p data-test-inline-error-body>{{this.error.description}}</p>
</div>
<div class="column is-centered is-minimum">
<button data-test-inline-error-close class="button is-danger" onclick={{action this.onDismiss}} type="button">Okay</button>
</div>
</div>
</div>
{{/if}}
<h1 class="title with-flex" data-test-title>
<div>
{{this.model.name}}
{{#if this.model.isConnectProxy}}
<ProxyTag @class="bumper-left" />
{{/if}}
<span class="{{unless this.model.isConnectProxy "bumper-left"}} tag {{this.model.stateClass}}" data-test-state>{{this.model.state}}</span>
</div>
<div>
{{#if this.model.isRunning}}
<div class="two-step-button">
<Exec::OpenButton
@job={{this.model.task.taskGroup.job}}
@taskGroup={{this.model.task.taskGroup}}
@allocation={{this.model.allocation}}
@task={{this.model.task}} />
</div>
<TwoStepButton
data-test-restart
@alignRight={{true}}
@idleText="Restart"
@cancelText="Cancel"
@confirmText="Yes, Restart"
@confirmationMessage="Are you sure? This will restart the task in-place."
@awaitingConfirmation={{this.restartTask.isRunning}}
@disabled={{this.restartTask.isRunning}}
@onConfirm={{perform this.restartTask}} />
{{/if}}
</div>
</h1>
<div class="boxed-section is-small">
<div class="boxed-section-body inline-definitions">
<span class="label">Task Details</span>
<span class="pair" data-test-started-at>
<span class="term">Started At</span>
{{format-ts this.model.startedAt}}
</span>
{{#if this.model.finishedAt}}
<span class="pair">
<span class="term">Finished At</span>
{{format-ts this.model.finishedAt}}
</span>
{{/if}}
<span class="pair">
<span class="term">Driver</span>
{{this.model.task.driver}}
</span>
<span class="pair">
<span class="term">Lifecycle</span>
<span data-test-lifecycle>{{this.model.task.lifecycleName}}</span>
</span>
</div>
</div>
<div class="boxed-section">
<div class="boxed-section-head is-hollow">
Resource Utilization
</div>
<div class="boxed-section-body">
{{#if this.model.isRunning}}
<div class="columns">
<div class="column">
<PrimaryMetric @resource={{this.model}} @metric="cpu" />
</div>
<div class="column">
<PrimaryMetric @resource={{this.model}} @metric="memory" />
</div>
</div>
{{else}}
<div data-test-resource-error class="empty-message">
<h3 data-test-resource-error-headline class="empty-message-headline">Task isn't running</h3>
<p class="empty-message-body">Only running tasks utilize resources.</p>
</div>
{{/if}}
</div>
</div>
{{#if this.model.task.volumeMounts.length}}
<div data-test-volumes class="boxed-section">
<div class="boxed-section-head">
Volumes
</div>
<div class="boxed-section-body is-full-bleed">
<ListTable @source={{this.model.task.volumeMounts}} as |t|>
<t.head>
<th>Name</th>
<th>Destination</th>
<th>Permissions</th>
<th>Client Source</th>
</t.head>
<t.body as |row|>
<tr data-test-volume>
<td data-test-volume-name>
{{#if row.model.isCSI}}
<LinkTo @route="csi.volumes.volume" @model={{row.model.volume}} @query={{hash volumeNamespace=row.model.namespace.id}}>
{{row.model.volume}}
</LinkTo>
{{else}}
{{row.model.volume}}
{{/if}}
</td>
<td data-test-volume-destination><code>{{row.model.destination}}</code></td>
<td data-test-volume-permissions>{{if row.model.readOnly "Read" "Read/Write"}}</td>
<td data-test-volume-client-source>{{row.model.source}}</td>
</tr>
</t.body>
</ListTable>
</div>
</div>
{{/if}}
<div class="boxed-section">
<div class="boxed-section-head">
Recent Events
</div>
<div class="boxed-section-body is-full-bleed">
<ListTable @source={{reverse this.model.events}} @class="is-striped" as |t|>
<t.head>
<th class="is-3">Time</th>
<th class="is-1">Type</th>
<th>Description</th>
</t.head>
<t.body as |row|>
<tr data-test-task-event>
<td data-test-task-event-time>{{format-ts row.model.time}}</td>
<td data-test-task-event-type>{{row.model.type}}</td>
<td data-test-task-event-message>
{{#if row.model.message}}
{{row.model.message}}
{{else}}
<em>No message</em>
{{/if}}
</td>
</tr>
</t.body>
</ListTable>
</div>
</div>
</section>