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