2021-02-17 21:01:44 +00:00
|
|
|
{{page-title "Allocation " this.model.name}}
|
2020-07-09 20:19:07 +00:00
|
|
|
<AllocationSubnav @allocation={{this.model}} />
|
2018-07-25 22:05:24 +00:00
|
|
|
<section class="section">
|
2020-07-09 20:19:07 +00:00
|
|
|
{{#if this.error}}
|
2019-05-21 00:19:24 +00:00
|
|
|
<div data-test-inline-error class="notification is-danger">
|
2019-05-17 00:43:12 +00:00
|
|
|
<div class="columns">
|
|
|
|
<div class="column">
|
2022-02-17 10:56:29 +00:00
|
|
|
<h3
|
|
|
|
data-test-inline-error-title
|
|
|
|
class="title is-4"
|
|
|
|
>{{this.error.title}}</h3>
|
2020-07-09 20:19:07 +00:00
|
|
|
<p data-test-inline-error-body>{{this.error.description}}</p>
|
2019-05-17 00:43:12 +00:00
|
|
|
</div>
|
|
|
|
<div class="column is-centered is-minimum">
|
2022-02-17 10:56:29 +00:00
|
|
|
<button
|
|
|
|
data-test-inline-error-close
|
|
|
|
class="button is-danger"
|
|
|
|
onclick={{action this.onDismiss}}
|
|
|
|
type="button"
|
|
|
|
>Okay</button>
|
2019-05-17 00:43:12 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{/if}}
|
|
|
|
|
2020-03-24 23:22:16 +00:00
|
|
|
<h1 data-test-title class="title with-headroom with-flex">
|
|
|
|
<div>
|
2022-02-17 10:56:29 +00:00
|
|
|
Allocation
|
|
|
|
{{this.model.name}}
|
|
|
|
<span
|
|
|
|
class="bumper-left tag {{this.model.statusClass}}"
|
|
|
|
>{{this.model.clientStatus}}</span>
|
2020-03-24 23:22:16 +00:00
|
|
|
</div>
|
|
|
|
<div>
|
2020-07-09 20:19:07 +00:00
|
|
|
{{#if this.model.isRunning}}
|
2020-03-24 23:22:16 +00:00
|
|
|
<div class="two-step-button">
|
2022-02-17 10:56:29 +00:00
|
|
|
<Exec::OpenButton
|
|
|
|
@job={{this.model.job}}
|
|
|
|
@allocation={{this.model}}
|
|
|
|
/>
|
2020-03-24 23:22:16 +00:00
|
|
|
</div>
|
2020-06-01 19:03:56 +00:00
|
|
|
<TwoStepButton
|
2020-03-24 23:22:16 +00:00
|
|
|
data-test-stop
|
2020-06-01 19:03:56 +00:00
|
|
|
@alignRight={{true}}
|
|
|
|
@idleText="Stop"
|
|
|
|
@cancelText="Cancel"
|
|
|
|
@confirmText="Yes, Stop"
|
|
|
|
@confirmationMessage="Are you sure? This will reschedule the allocation on a different client."
|
2020-07-09 20:19:07 +00:00
|
|
|
@awaitingConfirmation={{this.stopAllocation.isRunning}}
|
2022-02-17 10:56:29 +00:00
|
|
|
@disabled={{or
|
|
|
|
this.stopAllocation.isRunning
|
|
|
|
this.restartAllocation.isRunning
|
|
|
|
}}
|
|
|
|
@onConfirm={{perform this.stopAllocation}}
|
|
|
|
/>
|
2020-06-01 19:03:56 +00:00
|
|
|
<TwoStepButton
|
2020-03-24 23:22:16 +00:00
|
|
|
data-test-restart
|
2020-06-01 19:03:56 +00:00
|
|
|
@alignRight={{true}}
|
|
|
|
@idleText="Restart"
|
|
|
|
@cancelText="Cancel"
|
|
|
|
@confirmText="Yes, Restart"
|
|
|
|
@confirmationMessage="Are you sure? This will restart the allocation in-place."
|
2020-07-09 20:19:07 +00:00
|
|
|
@awaitingConfirmation={{this.restartAllocation.isRunning}}
|
2022-02-17 10:56:29 +00:00
|
|
|
@disabled={{or
|
|
|
|
this.stopAllocation.isRunning
|
|
|
|
this.restartAllocation.isRunning
|
|
|
|
}}
|
|
|
|
@onConfirm={{perform this.restartAllocation}}
|
|
|
|
/>
|
2020-03-24 23:22:16 +00:00
|
|
|
{{/if}}
|
|
|
|
</div>
|
2018-07-25 22:05:24 +00:00
|
|
|
</h1>
|
2017-10-30 21:16:08 +00:00
|
|
|
|
2020-03-24 23:22:16 +00:00
|
|
|
<span class="tag is-hollow is-small is-alone no-text-transform">
|
2020-07-09 20:19:07 +00:00
|
|
|
{{this.model.id}}
|
|
|
|
<CopyButton @clipboardText={{this.model.id}} />
|
2020-03-24 23:22:16 +00:00
|
|
|
</span>
|
|
|
|
|
2018-07-25 22:05:24 +00:00
|
|
|
<div class="boxed-section is-small">
|
2022-02-17 10:56:29 +00:00
|
|
|
<div
|
|
|
|
data-test-allocation-details
|
|
|
|
class="boxed-section-body inline-definitions"
|
|
|
|
>
|
2018-07-25 22:05:24 +00:00
|
|
|
<span class="label">Allocation Details</span>
|
|
|
|
<span class="pair job-link"><span class="term">Job</span>
|
2022-02-17 10:56:29 +00:00
|
|
|
<LinkTo
|
|
|
|
@route="jobs.job"
|
|
|
|
@model={{this.model.job}}
|
|
|
|
data-test-job-link
|
|
|
|
>{{this.model.job.name}}</LinkTo>
|
2018-07-25 22:05:24 +00:00
|
|
|
</span>
|
|
|
|
<span class="pair node-link"><span class="term">Client</span>
|
2022-02-17 10:56:29 +00:00
|
|
|
<LinkTo
|
|
|
|
@route="clients.client"
|
|
|
|
@model={{this.model.node}}
|
|
|
|
data-test-client-link
|
|
|
|
>{{this.model.node.shortId}}</LinkTo>
|
2018-07-25 22:05:24 +00:00
|
|
|
</span>
|
2017-10-30 21:16:08 +00:00
|
|
|
</div>
|
2018-07-25 22:05:24 +00:00
|
|
|
</div>
|
2017-10-30 20:39:15 +00:00
|
|
|
|
2018-09-14 17:21:28 +00:00
|
|
|
<div class="boxed-section">
|
|
|
|
<div class="boxed-section-head is-hollow">
|
|
|
|
Resource Utilization
|
|
|
|
</div>
|
|
|
|
<div class="boxed-section-body">
|
2020-07-09 20:19:07 +00:00
|
|
|
{{#if this.model.isRunning}}
|
2018-12-10 23:26:27 +00:00
|
|
|
<div class="columns">
|
|
|
|
<div class="column">
|
2022-02-17 10:56:29 +00:00
|
|
|
<PrimaryMetric::Allocation
|
|
|
|
@allocation={{this.model}}
|
|
|
|
@metric="cpu"
|
|
|
|
/>
|
2018-12-10 23:26:27 +00:00
|
|
|
</div>
|
|
|
|
<div class="column">
|
2022-02-17 10:56:29 +00:00
|
|
|
<PrimaryMetric::Allocation
|
|
|
|
@allocation={{this.model}}
|
|
|
|
@metric="memory"
|
|
|
|
/>
|
2018-12-10 23:26:27 +00:00
|
|
|
</div>
|
2018-09-14 17:21:28 +00:00
|
|
|
</div>
|
2018-12-10 23:26:27 +00:00
|
|
|
{{else}}
|
2018-12-11 01:28:35 +00:00
|
|
|
<div data-test-resource-error class="empty-message">
|
2022-02-17 10:56:29 +00:00
|
|
|
<h3
|
|
|
|
data-test-resource-error-headline
|
|
|
|
class="empty-message-headline"
|
|
|
|
>Allocation isn't running</h3>
|
|
|
|
<p class="empty-message-body">Only running allocations utilize
|
|
|
|
resources.</p>
|
2018-09-14 17:21:28 +00:00
|
|
|
</div>
|
2018-12-10 23:26:27 +00:00
|
|
|
{{/if}}
|
2018-09-14 17:21:28 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2020-07-09 20:19:07 +00:00
|
|
|
<LifecycleChart @taskStates={{this.model.states}} />
|
2020-04-30 13:15:19 +00:00
|
|
|
|
2018-07-25 22:05:24 +00:00
|
|
|
<div class="boxed-section">
|
|
|
|
<div class="boxed-section-head">
|
|
|
|
Tasks
|
2017-10-31 04:02:40 +00:00
|
|
|
</div>
|
2022-02-17 10:56:29 +00:00
|
|
|
<div
|
|
|
|
class="boxed-section-body {{if this.sortedStates.length 'is-full-bleed'}}"
|
|
|
|
>
|
2020-07-09 20:19:07 +00:00
|
|
|
{{#if this.sortedStates.length}}
|
2020-06-01 19:03:56 +00:00
|
|
|
<ListTable
|
2020-07-09 20:19:07 +00:00
|
|
|
@source={{this.sortedStates}}
|
|
|
|
@sortProperty={{this.sortProperty}}
|
|
|
|
@sortDescending={{this.sortDescending}}
|
2022-02-17 10:56:29 +00:00
|
|
|
@class="is-striped"
|
|
|
|
as |t|
|
|
|
|
>
|
2020-06-01 19:03:56 +00:00
|
|
|
<t.head>
|
2018-11-10 01:13:08 +00:00
|
|
|
<th class="is-narrow"></th>
|
2020-06-01 19:03:56 +00:00
|
|
|
<t.sort-by @prop="name">Name</t.sort-by>
|
|
|
|
<t.sort-by @prop="state">State</t.sort-by>
|
2018-11-10 01:13:08 +00:00
|
|
|
<th>Last Event</th>
|
2020-06-01 19:03:56 +00:00
|
|
|
<t.sort-by @prop="events.lastObject.time">Time</t.sort-by>
|
2020-02-13 06:14:28 +00:00
|
|
|
<th>Volumes</th>
|
2018-11-10 01:13:08 +00:00
|
|
|
<th>CPU</th>
|
|
|
|
<th>Memory</th>
|
2020-06-01 19:03:56 +00:00
|
|
|
</t.head>
|
|
|
|
<t.body as |row|>
|
|
|
|
<TaskRow
|
|
|
|
@data-test-task-row={{row.model.name}}
|
|
|
|
@task={{row.model}}
|
2022-02-17 10:56:29 +00:00
|
|
|
@onClick={{action "taskClick" row.model.allocation row.model}}
|
|
|
|
/>
|
2020-06-01 19:03:56 +00:00
|
|
|
</t.body>
|
|
|
|
</ListTable>
|
2018-11-10 01:13:08 +00:00
|
|
|
{{else}}
|
|
|
|
<div data-test-empty-tasks-list class="empty-message">
|
2022-02-17 10:56:29 +00:00
|
|
|
<h3
|
|
|
|
data-test-empty-tasks-list-headline
|
|
|
|
class="empty-message-headline"
|
|
|
|
>No Tasks</h3>
|
|
|
|
<p
|
|
|
|
data-test-empty-tasks-list-body
|
|
|
|
class="empty-message-body"
|
|
|
|
>Allocations will not have tasks until they are in a running state.</p>
|
2018-11-10 01:13:08 +00:00
|
|
|
</div>
|
|
|
|
{{/if}}
|
2018-07-25 22:05:24 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2018-05-03 19:31:25 +00:00
|
|
|
|
2020-08-20 15:07:13 +00:00
|
|
|
{{#if this.ports.length}}
|
2019-09-04 14:39:56 +00:00
|
|
|
<div class="boxed-section" data-test-allocation-ports>
|
|
|
|
<div class="boxed-section-head">
|
|
|
|
Ports
|
|
|
|
</div>
|
|
|
|
<div class="boxed-section-body is-full-bleed">
|
2020-08-20 15:07:13 +00:00
|
|
|
<ListTable @source={{this.ports}} as |t|>
|
2020-06-01 19:03:56 +00:00
|
|
|
<t.head>
|
2020-08-20 15:07:13 +00:00
|
|
|
<th>Name</th>
|
2019-09-04 14:39:56 +00:00
|
|
|
<th>Host Address</th>
|
|
|
|
<th>Mapped Port</th>
|
2020-06-01 19:03:56 +00:00
|
|
|
</t.head>
|
|
|
|
<t.body as |row|>
|
2019-09-04 14:39:56 +00:00
|
|
|
<tr data-test-allocation-port>
|
2020-08-20 15:07:13 +00:00
|
|
|
<td data-test-allocation-port-name>{{row.model.label}}</td>
|
2019-09-04 14:39:56 +00:00
|
|
|
<td data-test-allocation-port-address>
|
2022-02-17 10:56:29 +00:00
|
|
|
<a
|
|
|
|
href="http://{{row.model.hostIp}}:{{row.model.value}}"
|
|
|
|
target="_blank"
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
>{{row.model.hostIp}}:{{row.model.value}}</a>
|
2019-09-04 14:39:56 +00:00
|
|
|
</td>
|
|
|
|
<td data-test-allocation-port-to>{{row.model.to}}</td>
|
|
|
|
</tr>
|
2020-06-01 19:03:56 +00:00
|
|
|
</t.body>
|
|
|
|
</ListTable>
|
2019-09-04 14:39:56 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{/if}}
|
|
|
|
|
2020-07-09 20:19:07 +00:00
|
|
|
{{#if this.services.length}}
|
2019-09-04 14:39:56 +00:00
|
|
|
<div class="boxed-section">
|
|
|
|
<div class="boxed-section-head">
|
|
|
|
Services
|
|
|
|
</div>
|
|
|
|
<div class="boxed-section-body is-full-bleed">
|
2020-07-09 20:19:07 +00:00
|
|
|
<ListTable @source={{this.services}} as |t|>
|
2020-06-01 19:03:56 +00:00
|
|
|
<t.head>
|
2019-09-04 14:39:56 +00:00
|
|
|
<th class="is-2">Name</th>
|
|
|
|
<th class="is-1">Port</th>
|
|
|
|
<td>Tags</td>
|
2021-03-11 17:28:38 +00:00
|
|
|
<td>On Update</td>
|
2019-09-04 14:39:56 +00:00
|
|
|
<td>Connect?</td>
|
|
|
|
<td>Upstreams</td>
|
2020-06-01 19:03:56 +00:00
|
|
|
</t.head>
|
|
|
|
<t.body as |row|>
|
2019-09-04 14:39:56 +00:00
|
|
|
<tr data-test-service>
|
|
|
|
<td data-test-service-name>{{row.model.name}}</td>
|
|
|
|
<td data-test-service-port>{{row.model.portLabel}}</td>
|
2022-02-17 10:56:29 +00:00
|
|
|
<td data-test-service-tags class="is-long-text">{{join
|
|
|
|
", "
|
|
|
|
row.model.tags
|
|
|
|
}}</td>
|
2021-03-11 17:28:38 +00:00
|
|
|
<td data-test-service-onupdate>{{row.model.onUpdate}}</td>
|
2022-02-17 10:56:29 +00:00
|
|
|
<td data-test-service-connect>{{if
|
|
|
|
row.model.connect
|
|
|
|
"Yes"
|
|
|
|
"No"
|
|
|
|
}}</td>
|
2019-09-04 14:39:56 +00:00
|
|
|
<td data-test-service-upstreams>
|
2022-02-17 10:56:29 +00:00
|
|
|
{{#each
|
|
|
|
row.model.connect.sidecarService.proxy.upstreams
|
|
|
|
as |upstream|
|
|
|
|
}}
|
2019-09-04 14:39:56 +00:00
|
|
|
{{upstream.destinationName}}:{{upstream.localBindPort}}
|
|
|
|
{{/each}}
|
|
|
|
</td>
|
|
|
|
</tr>
|
2020-06-01 19:03:56 +00:00
|
|
|
</t.body>
|
|
|
|
</ListTable>
|
2019-09-04 14:39:56 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{/if}}
|
|
|
|
|
2020-07-09 20:19:07 +00:00
|
|
|
{{#if this.model.hasRescheduleEvents}}
|
2018-07-25 22:05:24 +00:00
|
|
|
<div class="boxed-section" data-test-reschedule-events>
|
|
|
|
<div class="boxed-section-head is-hollow">
|
|
|
|
Reschedule Events
|
|
|
|
</div>
|
|
|
|
<div class="boxed-section-body">
|
2020-07-09 20:19:07 +00:00
|
|
|
<RescheduleEventTimeline @allocation={{this.model}} />
|
2018-05-03 19:31:25 +00:00
|
|
|
</div>
|
2018-07-25 22:05:24 +00:00
|
|
|
</div>
|
|
|
|
{{/if}}
|
2019-04-17 23:17:48 +00:00
|
|
|
|
2020-07-09 20:19:07 +00:00
|
|
|
{{#if this.model.wasPreempted}}
|
2019-04-17 23:17:48 +00:00
|
|
|
<div class="boxed-section is-warning" data-test-was-preempted>
|
|
|
|
<div class="boxed-section-head">Preempted By</div>
|
|
|
|
<div class="boxed-section-body">
|
2020-07-09 20:19:07 +00:00
|
|
|
{{#if this.preempter}}
|
2019-04-17 23:17:48 +00:00
|
|
|
<div class="boxed-section is-small">
|
|
|
|
<div class="boxed-section-body inline-definitions">
|
|
|
|
<span class="pair">
|
2022-02-17 10:56:29 +00:00
|
|
|
<span
|
|
|
|
data-test-allocation-status
|
|
|
|
class="tag {{this.preempter.statusClass}}"
|
|
|
|
>
|
2020-07-09 20:19:07 +00:00
|
|
|
{{this.preempter.clientStatus}}
|
2019-04-17 23:17:48 +00:00
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<span class="pair">
|
2022-02-17 10:56:29 +00:00
|
|
|
<span
|
|
|
|
class="term"
|
|
|
|
data-test-allocation-name
|
|
|
|
>{{this.preempter.name}}</span>
|
|
|
|
<LinkTo
|
|
|
|
@route="allocations.allocation"
|
|
|
|
@model={{this.preempter}}
|
|
|
|
data-test-allocation-id
|
|
|
|
>{{this.preempter.shortId}}</LinkTo>
|
2019-04-17 23:17:48 +00:00
|
|
|
</span>
|
|
|
|
<span class="pair job-link"><span class="term">Job</span>
|
2022-02-17 10:56:29 +00:00
|
|
|
<LinkTo
|
|
|
|
@route="jobs.job"
|
|
|
|
@model={{this.preempter.job}}
|
|
|
|
data-test-job-link
|
|
|
|
>{{this.preempter.job.name}}</LinkTo>
|
2019-04-17 23:17:48 +00:00
|
|
|
</span>
|
|
|
|
<span class="pair job-priority"><span class="term">Priority</span>
|
2022-02-17 10:56:29 +00:00
|
|
|
<span
|
|
|
|
data-test-job-priority
|
|
|
|
>{{this.preempter.job.priority}}</span>
|
2019-04-17 23:17:48 +00:00
|
|
|
</span>
|
|
|
|
<span class="pair node-link"><span class="term">Client</span>
|
2022-02-17 10:56:29 +00:00
|
|
|
<LinkTo
|
|
|
|
@route="clients.client"
|
|
|
|
@model={{this.preempter.node}}
|
|
|
|
data-test-client-link
|
|
|
|
>{{this.preempter.node.shortId}}</LinkTo>
|
2019-04-17 23:17:48 +00:00
|
|
|
</span>
|
|
|
|
<span class="pair"><span class="term">Reserved CPU</span>
|
2022-02-17 10:56:29 +00:00
|
|
|
<span data-test-allocation-cpu>{{format-scheduled-hertz
|
|
|
|
this.preempter.resources.cpu
|
|
|
|
}}</span>
|
2019-04-17 23:17:48 +00:00
|
|
|
</span>
|
|
|
|
<span class="pair"><span class="term">Reserved Memory</span>
|
2022-02-17 10:56:29 +00:00
|
|
|
<span data-test-allocation-memory>{{format-scheduled-bytes
|
|
|
|
this.preempter.resources.memory
|
|
|
|
start="MiB"
|
|
|
|
}}</span>
|
2019-04-17 23:17:48 +00:00
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
2020-07-09 17:30:11 +00:00
|
|
|
{{else}}
|
|
|
|
<div class="empty-message">
|
|
|
|
<h3 class="empty-message-headline">Allocation is gone</h3>
|
2022-02-17 10:56:29 +00:00
|
|
|
<p class="empty-message-body">This allocation has been stopped and
|
|
|
|
garbage collected.</p>
|
2020-07-09 17:30:11 +00:00
|
|
|
</div>
|
2019-04-17 23:17:48 +00:00
|
|
|
{{/if}}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{/if}}
|
2019-04-17 23:34:25 +00:00
|
|
|
|
2022-02-17 10:56:29 +00:00
|
|
|
{{#if
|
|
|
|
(and
|
|
|
|
this.model.preemptedAllocations.isFulfilled
|
|
|
|
this.model.preemptedAllocations.length
|
|
|
|
)
|
|
|
|
}}
|
2019-04-17 23:34:25 +00:00
|
|
|
<div class="boxed-section" data-test-preemptions>
|
|
|
|
<div class="boxed-section-head">Preempted Allocations</div>
|
|
|
|
<div class="boxed-section-body">
|
2020-06-01 19:03:56 +00:00
|
|
|
<ListTable
|
2020-07-09 20:19:07 +00:00
|
|
|
@source={{this.model.preemptedAllocations}}
|
2022-02-17 10:56:29 +00:00
|
|
|
@class="allocations is-isolated"
|
|
|
|
as |t|
|
|
|
|
>
|
2020-06-01 19:03:56 +00:00
|
|
|
<t.head>
|
2019-04-17 23:34:25 +00:00
|
|
|
<th class="is-narrow"></th>
|
|
|
|
<th>ID</th>
|
|
|
|
<th>Task Group</th>
|
|
|
|
<th>Created</th>
|
|
|
|
<th>Modified</th>
|
|
|
|
<th>Status</th>
|
|
|
|
<th>Version</th>
|
|
|
|
<th>Node</th>
|
|
|
|
<th>CPU</th>
|
|
|
|
<th>Memory</th>
|
2020-06-01 19:03:56 +00:00
|
|
|
</t.head>
|
|
|
|
<t.body as |row|>
|
2022-02-17 10:56:29 +00:00
|
|
|
<AllocationRow
|
|
|
|
@allocation={{row.model}}
|
|
|
|
@context="job"
|
|
|
|
@data-test-allocation={{row.model.id}}
|
|
|
|
/>
|
2020-06-01 19:03:56 +00:00
|
|
|
</t.body>
|
|
|
|
</ListTable>
|
2019-04-17 23:34:25 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{/if}}
|
2018-07-25 22:05:24 +00:00
|
|
|
</section>
|