github.com/thomasobenaus/nomad@v0.11.1/ui/app/templates/allocations/allocation/task/index.hbs (about) 1 {{title "Task " model.name}} 2 {{task-subnav task=model}} 3 <section class="section"> 4 {{#if error}} 5 <div data-test-inline-error class="notification is-danger"> 6 <div class="columns"> 7 <div class="column"> 8 <h3 data-test-inline-error-title class="title is-4">{{error.title}}</h3> 9 <p data-test-inline-error-body>{{error.description}}</p> 10 </div> 11 <div class="column is-centered is-minimum"> 12 <button data-test-inline-error-close class="button is-danger" onclick={{action onDismiss}}>Okay</button> 13 </div> 14 </div> 15 </div> 16 {{/if}} 17 18 <h1 class="title with-flex" data-test-title> 19 <div> 20 {{model.name}} 21 {{#if model.isConnectProxy}} 22 {{proxy-tag class="bumper-left"}} 23 {{/if}} 24 <span class="{{unless model.isConnectProxy "bumper-left"}} tag {{model.stateClass}}" data-test-state>{{model.state}}</span> 25 </div> 26 <div> 27 {{#if model.isRunning}} 28 <div class="two-step-button"> 29 {{exec/open-button 30 job=model.task.taskGroup.job 31 taskGroup=model.task.taskGroup 32 allocation=model.allocation 33 task=model.task}} 34 </div> 35 {{two-step-button 36 data-test-restart 37 alignRight=true 38 idleText="Restart" 39 cancelText="Cancel" 40 confirmText="Yes, Restart" 41 confirmationMessage="Are you sure? This will restart the task in-place." 42 awaitingConfirmation=restartTask.isRunning 43 disabled=restartTask.isRunning 44 onConfirm=(perform restartTask)}} 45 {{/if}} 46 </div> 47 </h1> 48 49 <div class="boxed-section is-small"> 50 <div class="boxed-section-body inline-definitions"> 51 <span class="label">Task Details</span> 52 <span class="pair" data-test-started-at> 53 <span class="term">Started At</span> 54 {{format-ts model.startedAt}} 55 </span> 56 {{#if model.finishedAt}} 57 <span class="pair"> 58 <span class="term">Finished At</span> 59 {{format-ts model.finishedAt}} 60 </span> 61 {{/if}} 62 <span class="pair"> 63 <span class="term">Driver</span> 64 {{model.task.driver}} 65 </span> 66 </div> 67 </div> 68 69 <div class="boxed-section"> 70 <div class="boxed-section-head is-hollow"> 71 Resource Utilization 72 </div> 73 <div class="boxed-section-body"> 74 {{#if model.isRunning}} 75 <div class="columns"> 76 <div class="column"> 77 {{primary-metric resource=model metric="cpu"}} 78 </div> 79 <div class="column"> 80 {{primary-metric resource=model metric="memory"}} 81 </div> 82 </div> 83 {{else}} 84 <div data-test-resource-error class="empty-message"> 85 <h3 data-test-resource-error-headline class="empty-message-headline">Task isn't running</h3> 86 <p class="empty-message-body">Only running tasks utilize resources.</p> 87 </div> 88 {{/if}} 89 </div> 90 </div> 91 92 {{#if network.ports.length}} 93 <div class="boxed-section" data-test-task-addresses> 94 <div class="boxed-section-head"> 95 Addresses 96 </div> 97 <div class="boxed-section-body is-full-bleed"> 98 {{#list-table source=network.ports as |t|}} 99 {{#t.head}} 100 <th class="is-1">Dynamic?</th> 101 <th class="is-2">Name</th> 102 <th>Address</th> 103 {{/t.head}} 104 {{#t.body as |row|}} 105 <tr data-test-task-address> 106 <td data-test-task-address-is-dynamic>{{if row.model.isDynamic "Yes" "No"}}</td> 107 <td data-test-task-address-name>{{row.model.name}}</td> 108 <td data-test-task-address-address> 109 <a href="http://{{network.ip}}:{{row.model.port}}" target="_blank" rel="noopener noreferrer"> 110 {{network.ip}}:{{row.model.port}} 111 </a> 112 </td> 113 </tr> 114 {{/t.body}} 115 {{/list-table}} 116 </div> 117 </div> 118 {{/if}} 119 120 {{#if model.task.volumeMounts.length}} 121 <div data-test-volumes class="boxed-section"> 122 <div class="boxed-section-head"> 123 Volumes 124 </div> 125 <div class="boxed-section-body is-full-bleed"> 126 {{#list-table source=model.task.volumeMounts as |t|}} 127 {{#t.head}} 128 <th>Name</th> 129 <th>Destination</th> 130 <th>Permissions</th> 131 <th>Client Source</th> 132 {{/t.head}} 133 {{#t.body as |row|}} 134 <tr data-test-volume> 135 <td data-test-volume-name> 136 {{#if row.model.isCSI}} 137 {{#link-to "csi.volumes.volume" row.model.volume (query-params volumeNamespace=row.model.namespace.id)}} 138 {{row.model.volume}} 139 {{/link-to}} 140 {{else}} 141 {{row.model.volume}} 142 {{/if}} 143 </td> 144 <td data-test-volume-destination><code>{{row.model.destination}}</code></td> 145 <td data-test-volume-permissions>{{if row.model.readOnly "Read" "Read/Write"}}</td> 146 <td data-test-volume-client-source>{{row.model.source}}</td> 147 </tr> 148 {{/t.body}} 149 {{/list-table}} 150 </div> 151 </div> 152 {{/if}} 153 154 <div class="boxed-section"> 155 <div class="boxed-section-head"> 156 Recent Events 157 </div> 158 <div class="boxed-section-body is-full-bleed"> 159 {{#list-table source=(reverse model.events) class="is-striped" as |t|}} 160 {{#t.head}} 161 <th class="is-3">Time</th> 162 <th class="is-1">Type</th> 163 <th>Description</th> 164 {{/t.head}} 165 {{#t.body as |row|}} 166 <tr data-test-task-event> 167 <td data-test-task-event-time>{{format-ts row.model.time}}</td> 168 <td data-test-task-event-type>{{row.model.type}}</td> 169 <td data-test-task-event-message> 170 {{#if row.model.message}} 171 {{row.model.message}} 172 {{else}} 173 <em>No message</em> 174 {{/if}} 175 </td> 176 </tr> 177 {{/t.body}} 178 {{/list-table}} 179 </div> 180 </div> 181 </section>