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>