github.com/zoomfoo/nomad@v0.8.5-0.20180907175415-f28fd3a1a056/ui/app/templates/allocations/allocation/index.hbs (about) 1 <section class="section"> 2 <h1 data-test-title class="title"> 3 Allocation {{model.name}} 4 <span class="bumper-left tag {{model.statusClass}}">{{model.clientStatus}}</span> 5 <span class="tag is-hollow is-small no-text-transform">{{model.id}}</span> 6 </h1> 7 8 <div class="boxed-section is-small"> 9 <div data-test-allocation-details class="boxed-section-body inline-definitions"> 10 <span class="label">Allocation Details</span> 11 <span class="pair job-link"><span class="term">Job</span> 12 {{#link-to "jobs.job" model.job (query-params jobNamespace=model.job.namespace.id) data-test-job-link}}{{model.job.name}}{{/link-to}} 13 </span> 14 <span class="pair node-link"><span class="term">Client</span> 15 {{#link-to "clients.client" model.node data-test-client-link}}{{model.node.shortId}}{{/link-to}} 16 </span> 17 </div> 18 </div> 19 20 <div class="boxed-section"> 21 <div class="boxed-section-head"> 22 Tasks 23 </div> 24 <div class="boxed-section-body is-full-bleed"> 25 {{#list-table 26 source=sortedStates 27 sortProperty=sortProperty 28 sortDescending=sortDescending 29 class="is-striped" as |t|}} 30 {{#t.head}} 31 <th class="is-narrow"></th> 32 {{#t.sort-by prop="name"}}Name{{/t.sort-by}} 33 {{#t.sort-by prop="state"}}State{{/t.sort-by}} 34 <th>Last Event</th> 35 {{#t.sort-by prop="events.lastObject.time"}}Time{{/t.sort-by}} 36 <th>Addresses</th> 37 {{/t.head}} 38 {{#t.body as |row|}} 39 <tr 40 data-test-task-row={{row.model.task.name}} 41 onclick={{action "taskClick" row.model.allocation row.model}} 42 class="is-interactive"> 43 <td class="is-narrow"> 44 {{#if (not row.model.driverStatus.healthy)}} 45 <span data-test-icon="unhealthy-driver" class="tooltip text-center" aria-label="{{row.model.driver}} is unhealthy"> 46 {{x-icon "warning" class="is-warning"}} 47 </span> 48 {{/if}} 49 </td> 50 <td data-test-name> 51 {{#link-to "allocations.allocation.task" row.model.allocation row.model class="is-primary"}} 52 {{row.model.name}} 53 {{/link-to}} 54 </td> 55 <td data-test-state>{{row.model.state}}</td> 56 <td data-test-message> 57 {{#if row.model.events.lastObject.message}} 58 {{row.model.events.lastObject.message}} 59 {{else}} 60 <em>No message</em> 61 {{/if}} 62 </td> 63 <td data-test-time>{{moment-format row.model.events.lastObject.time "MM/DD/YY HH:mm:ss"}}</td> 64 <td data-test-ports> 65 <ul> 66 {{#with row.model.resources.networks.firstObject as |network|}} 67 {{#each network.reservedPorts as |port|}} 68 <li data-test-port> 69 <strong>{{port.Label}}:</strong> 70 <a href="http://{{network.ip}}:{{port.Value}}" target="_blank">{{network.ip}}:{{port.Value}}</a> 71 </li> 72 {{/each}} 73 {{#each network.dynamicPorts as |port|}} 74 <li> 75 <strong>{{port.Label}}:</strong> 76 <a href="http://{{network.ip}}:{{port.Value}}" target="_blank">{{network.ip}}:{{port.Value}}</a> 77 </li> 78 {{/each}} 79 {{/with}} 80 </ul> 81 </td> 82 </tr> 83 {{/t.body}} 84 {{/list-table}} 85 </div> 86 </div> 87 88 {{#if model.hasRescheduleEvents}} 89 <div class="boxed-section" data-test-reschedule-events> 90 <div class="boxed-section-head is-hollow"> 91 Reschedule Events 92 </div> 93 <div class="boxed-section-body"> 94 {{reschedule-event-timeline allocation=model}} 95 </div> 96 </div> 97 {{/if}} 98 </section>