github.com/ferranbt/nomad@v0.9.3-0.20190607002617-85c449b7667c/ui/app/templates/allocations/allocation/index.hbs (about) 1 <section class="section"> 2 {{#if error}} 3 <div data-test-inline-error class="notification is-danger"> 4 <div class="columns"> 5 <div class="column"> 6 <h3 data-test-inline-error-title class="title is-4">{{error.title}}</h3> 7 <p data-test-inline-error-body>{{error.description}}</p> 8 </div> 9 <div class="column is-centered is-minimum"> 10 <button data-test-inline-error-close class="button is-danger" onclick={{action onDismiss}}>Okay</button> 11 </div> 12 </div> 13 </div> 14 {{/if}} 15 16 <h1 data-test-title class="title with-headroom"> 17 Allocation {{model.name}} 18 <span class="bumper-left tag {{model.statusClass}}">{{model.clientStatus}}</span> 19 <span class="tag is-hollow is-small no-text-transform">{{model.id}}</span> 20 {{#if model.isRunning}} 21 {{two-step-button 22 data-test-stop 23 idleText="Stop" 24 cancelText="Cancel" 25 confirmText="Yes, Stop" 26 confirmationMessage="Are you sure? This will reschedule the allocation on a different client." 27 awaitingConfirmation=stopAllocation.isRunning 28 disabled=(or stopAllocation.isRunning restartAllocation.isRunning) 29 onConfirm=(perform stopAllocation)}} 30 {{two-step-button 31 data-test-restart 32 idleText="Restart" 33 cancelText="Cancel" 34 confirmText="Yes, Restart" 35 confirmationMessage="Are you sure? This will restart the allocation in-place." 36 awaitingConfirmation=restartAllocation.isRunning 37 disabled=(or stopAllocation.isRunning restartAllocation.isRunning) 38 onConfirm=(perform restartAllocation)}} 39 {{/if}} 40 </h1> 41 42 <div class="boxed-section is-small"> 43 <div data-test-allocation-details class="boxed-section-body inline-definitions"> 44 <span class="label">Allocation Details</span> 45 <span class="pair job-link"><span class="term">Job</span> 46 {{#link-to "jobs.job" model.job (query-params jobNamespace=model.job.namespace.id) data-test-job-link}}{{model.job.name}}{{/link-to}} 47 </span> 48 <span class="pair node-link"><span class="term">Client</span> 49 {{#link-to "clients.client" model.node data-test-client-link}}{{model.node.shortId}}{{/link-to}} 50 </span> 51 </div> 52 </div> 53 54 <div class="boxed-section"> 55 <div class="boxed-section-head is-hollow"> 56 Resource Utilization 57 </div> 58 <div class="boxed-section-body"> 59 {{#if model.isRunning}} 60 <div class="columns"> 61 <div class="column"> 62 {{primary-metric resource=model metric="cpu"}} 63 </div> 64 <div class="column"> 65 {{primary-metric resource=model metric="memory"}} 66 </div> 67 </div> 68 {{else}} 69 <div data-test-resource-error class="empty-message"> 70 <h3 data-test-resource-error-headline class="empty-message-headline">Allocation isn't running</h3> 71 <p class="empty-message-body">Only running allocations utilize resources.</p> 72 </div> 73 {{/if}} 74 </div> 75 </div> 76 77 <div class="boxed-section"> 78 <div class="boxed-section-head"> 79 Tasks 80 </div> 81 <div class="boxed-section-body {{if sortedStates.length "is-full-bleed"}}"> 82 {{#if sortedStates.length}} 83 {{#list-table 84 source=sortedStates 85 sortProperty=sortProperty 86 sortDescending=sortDescending 87 class="is-striped" as |t|}} 88 {{#t.head}} 89 <th class="is-narrow"></th> 90 {{#t.sort-by prop="name"}}Name{{/t.sort-by}} 91 {{#t.sort-by prop="state"}}State{{/t.sort-by}} 92 <th>Last Event</th> 93 {{#t.sort-by prop="events.lastObject.time"}}Time{{/t.sort-by}} 94 <th>Addresses</th> 95 <th>CPU</th> 96 <th>Memory</th> 97 {{/t.head}} 98 {{#t.body as |row|}} 99 {{task-row 100 data-test-task-row=row.model.name 101 task=row.model 102 onClick=(action "taskClick" row.model.allocation row.model)}} 103 {{/t.body}} 104 {{/list-table}} 105 {{else}} 106 <div data-test-empty-tasks-list class="empty-message"> 107 <h3 data-test-empty-tasks-list-headline class="empty-message-headline">No Tasks</h3> 108 <p data-test-empty-tasks-list-body class="empty-message-body">Allocations will not have tasks until they are in a running state.</p> 109 </div> 110 {{/if}} 111 </div> 112 </div> 113 114 {{#if model.hasRescheduleEvents}} 115 <div class="boxed-section" data-test-reschedule-events> 116 <div class="boxed-section-head is-hollow"> 117 Reschedule Events 118 </div> 119 <div class="boxed-section-body"> 120 {{reschedule-event-timeline allocation=model}} 121 </div> 122 </div> 123 {{/if}} 124 125 {{#if model.wasPreempted}} 126 <div class="boxed-section is-warning" data-test-was-preempted> 127 <div class="boxed-section-head">Preempted By</div> 128 <div class="boxed-section-body"> 129 {{#if (not preempter)}} 130 <div class="empty-message"> 131 <h3 class="empty-message-headline">Allocation is gone</h3> 132 <p class="empty-message-body">This allocation has been stopped and garbage collected.</p> 133 </div> 134 {{else}} 135 <div class="boxed-section is-small"> 136 <div class="boxed-section-body inline-definitions"> 137 <span class="pair"> 138 <span data-test-allocation-status class="tag {{preempter.statusClass}}"> 139 {{preempter.clientStatus}} 140 </span> 141 </span> 142 <span class="pair"> 143 <span class="term" data-test-allocation-name>{{preempter.name}}</span> 144 {{#link-to "allocations.allocation" preempter data-test-allocation-id}}{{preempter.shortId}}{{/link-to}} 145 </span> 146 <span class="pair job-link"><span class="term">Job</span> 147 {{#link-to "jobs.job" preempter.job (query-params jobNamespace=preempter.job.namespace.id) data-test-job-link}}{{preempter.job.name}}{{/link-to}} 148 </span> 149 <span class="pair job-priority"><span class="term">Priority</span> 150 <span data-test-job-priority>{{preempter.job.priority}}</span> 151 </span> 152 <span class="pair node-link"><span class="term">Client</span> 153 {{#link-to "clients.client" preempter.node data-test-client-link}}{{preempter.node.shortId}}{{/link-to}} 154 </span> 155 <span class="pair"><span class="term">Reserved CPU</span> 156 <span data-test-allocation-cpu>{{preempter.resources.cpu}} MHz</span> 157 </span> 158 <span class="pair"><span class="term">Reserved Memory</span> 159 <span data-test-allocation-memory>{{preempter.resources.memory}} MiB</span> 160 </span> 161 </div> 162 </div> 163 {{/if}} 164 </div> 165 </div> 166 {{/if}} 167 168 {{#if (and model.preemptedAllocations.isFulfilled model.preemptedAllocations.length)}} 169 <div class="boxed-section" data-test-preemptions> 170 <div class="boxed-section-head">Preempted Allocations</div> 171 <div class="boxed-section-body"> 172 {{#list-table 173 source=model.preemptedAllocations 174 class="allocations is-isolated" as |t|}} 175 {{#t.head}} 176 <th class="is-narrow"></th> 177 <th>ID</th> 178 <th>Task Group</th> 179 <th>Created</th> 180 <th>Modified</th> 181 <th>Status</th> 182 <th>Version</th> 183 <th>Node</th> 184 <th>CPU</th> 185 <th>Memory</th> 186 {{/t.head}} 187 {{#t.body as |row|}} 188 {{allocation-row allocation=row.model context="job" data-test-allocation=row.model.id}} 189 {{/t.body}} 190 {{/list-table}} 191 </div> 192 </div> 193 {{/if}} 194 </section>