github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/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 <span class="pair"> 67 <span class="term">Lifecycle</span> 68 <span data-test-lifecycle>{{model.task.lifecycleName}}</span> 69 </span> 70 </div> 71 </div> 72 73 <div class="boxed-section"> 74 <div class="boxed-section-head is-hollow"> 75 Resource Utilization 76 </div> 77 <div class="boxed-section-body"> 78 {{#if model.isRunning}} 79 <div class="columns"> 80 <div class="column"> 81 {{primary-metric resource=model metric="cpu"}} 82 </div> 83 <div class="column"> 84 {{primary-metric resource=model metric="memory"}} 85 </div> 86 </div> 87 {{else}} 88 <div data-test-resource-error class="empty-message"> 89 <h3 data-test-resource-error-headline class="empty-message-headline">Task isn't running</h3> 90 <p class="empty-message-body">Only running tasks utilize resources.</p> 91 </div> 92 {{/if}} 93 </div> 94 </div> 95 96 {{#if (and (not model.task.lifecycle) prestartTaskStates)}} 97 <div class="boxed-section" data-test-prestart-tasks> 98 <div class="boxed-section-head"> 99 Prestart Tasks 100 </div> 101 <div class="boxed-section-body is-full-bleed"> 102 {{#list-table source=prestartTaskStates as |t|}} 103 {{#t.head}} 104 <th class="is-narrow"></th> 105 <th>Task</th> 106 <th>State</th> 107 <th>Lifecycle</th> 108 {{/t.head}} 109 {{#t.body as |row|}} 110 <tr data-test-prestart-task> 111 <td class="is-narrow"> 112 {{#if (and row.model.isRunning (eq row.model.task.lifecycleName "prestart"))}} 113 <span class="tooltip text-center" role="tooltip" aria-label="Lifecycle constraints not met"> 114 {{x-icon "warning" class="is-warning"}} 115 </span> 116 {{/if}} 117 </td> 118 <td data-test-name>{{row.model.task.name}}</td> 119 <td data-test-state>{{row.model.state}}</td> 120 <td data-test-lifecycle>{{row.model.task.lifecycleName}}</td> 121 </tr> 122 {{/t.body}} 123 {{/list-table}} 124 </div> 125 </div> 126 {{/if}} 127 128 {{#if network.ports.length}} 129 <div class="boxed-section" data-test-task-addresses> 130 <div class="boxed-section-head"> 131 Addresses 132 </div> 133 <div class="boxed-section-body is-full-bleed"> 134 {{#list-table source=network.ports as |t|}} 135 {{#t.head}} 136 <th class="is-1">Dynamic?</th> 137 <th class="is-2">Name</th> 138 <th>Address</th> 139 {{/t.head}} 140 {{#t.body as |row|}} 141 <tr data-test-task-address> 142 <td data-test-task-address-is-dynamic>{{if row.model.isDynamic "Yes" "No"}}</td> 143 <td data-test-task-address-name>{{row.model.name}}</td> 144 <td data-test-task-address-address> 145 <a href="http://{{network.ip}}:{{row.model.port}}" target="_blank" rel="noopener noreferrer"> 146 {{network.ip}}:{{row.model.port}} 147 </a> 148 </td> 149 </tr> 150 {{/t.body}} 151 {{/list-table}} 152 </div> 153 </div> 154 {{/if}} 155 156 {{#if model.task.volumeMounts.length}} 157 <div data-test-volumes class="boxed-section"> 158 <div class="boxed-section-head"> 159 Volumes 160 </div> 161 <div class="boxed-section-body is-full-bleed"> 162 {{#list-table source=model.task.volumeMounts as |t|}} 163 {{#t.head}} 164 <th>Name</th> 165 <th>Destination</th> 166 <th>Permissions</th> 167 <th>Client Source</th> 168 {{/t.head}} 169 {{#t.body as |row|}} 170 <tr data-test-volume> 171 <td data-test-volume-name> 172 {{#if row.model.isCSI}} 173 {{#link-to "csi.volumes.volume" row.model.volume (query-params volumeNamespace=row.model.namespace.id)}} 174 {{row.model.volume}} 175 {{/link-to}} 176 {{else}} 177 {{row.model.volume}} 178 {{/if}} 179 </td> 180 <td data-test-volume-destination><code>{{row.model.destination}}</code></td> 181 <td data-test-volume-permissions>{{if row.model.readOnly "Read" "Read/Write"}}</td> 182 <td data-test-volume-client-source>{{row.model.source}}</td> 183 </tr> 184 {{/t.body}} 185 {{/list-table}} 186 </div> 187 </div> 188 {{/if}} 189 190 <div class="boxed-section"> 191 <div class="boxed-section-head"> 192 Recent Events 193 </div> 194 <div class="boxed-section-body is-full-bleed"> 195 {{#list-table source=(reverse model.events) class="is-striped" as |t|}} 196 {{#t.head}} 197 <th class="is-3">Time</th> 198 <th class="is-1">Type</th> 199 <th>Description</th> 200 {{/t.head}} 201 {{#t.body as |row|}} 202 <tr data-test-task-event> 203 <td data-test-task-event-time>{{format-ts row.model.time}}</td> 204 <td data-test-task-event-type>{{row.model.type}}</td> 205 <td data-test-task-event-message> 206 {{#if row.model.message}} 207 {{row.model.message}} 208 {{else}} 209 <em>No message</em> 210 {{/if}} 211 </td> 212 </tr> 213 {{/t.body}} 214 {{/list-table}} 215 </div> 216 </div> 217 </section>