github.com/aminovpavel/nomad@v0.11.8/ui/app/templates/allocations/allocation/index.hbs (about)

     1  {{title "Allocation " model.name}}
     2  {{allocation-subnav allocation=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 data-test-title class="title with-headroom with-flex">
    19      <div>
    20        Allocation {{model.name}}
    21        <span class="bumper-left tag {{model.statusClass}}">{{model.clientStatus}}</span>
    22      </div>
    23      <div>
    24        {{#if model.isRunning}}
    25          <div class="two-step-button">
    26            {{exec/open-button job=model.job allocation=model}}
    27          </div>
    28          {{two-step-button
    29            data-test-stop
    30            alignRight=true
    31            idleText="Stop"
    32            cancelText="Cancel"
    33            confirmText="Yes, Stop"
    34            confirmationMessage="Are you sure? This will reschedule the allocation on a different client."
    35            awaitingConfirmation=stopAllocation.isRunning
    36            disabled=(or stopAllocation.isRunning restartAllocation.isRunning)
    37            onConfirm=(perform stopAllocation)}}
    38          {{two-step-button
    39            data-test-restart
    40            alignRight=true
    41            idleText="Restart"
    42            cancelText="Cancel"
    43            confirmText="Yes, Restart"
    44            confirmationMessage="Are you sure? This will restart the allocation in-place."
    45            awaitingConfirmation=restartAllocation.isRunning
    46            disabled=(or stopAllocation.isRunning restartAllocation.isRunning)
    47            onConfirm=(perform restartAllocation)}}
    48        {{/if}}
    49      </div>
    50    </h1>
    51  
    52    <span class="tag is-hollow is-small is-alone no-text-transform">
    53      {{model.id}}
    54      {{copy-button clipboardText=model.id}}
    55    </span>
    56  
    57    <div class="boxed-section is-small">
    58      <div data-test-allocation-details class="boxed-section-body inline-definitions">
    59        <span class="label">Allocation Details</span>
    60        <span class="pair job-link"><span class="term">Job</span>
    61          {{#link-to "jobs.job" model.job (query-params jobNamespace=model.job.namespace.id) data-test-job-link}}{{model.job.name}}{{/link-to}}
    62        </span>
    63        <span class="pair node-link"><span class="term">Client</span>
    64          {{#link-to "clients.client" model.node data-test-client-link}}{{model.node.shortId}}{{/link-to}}
    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">Allocation isn't running</h3>
    86            <p class="empty-message-body">Only running allocations utilize resources.</p>
    87          </div>
    88        {{/if}}
    89      </div>
    90    </div>
    91  
    92    {{lifecycle-chart taskStates=model.states}}
    93  
    94    <div class="boxed-section">
    95      <div class="boxed-section-head">
    96        Tasks
    97      </div>
    98      <div class="boxed-section-body {{if sortedStates.length "is-full-bleed"}}">
    99        {{#if sortedStates.length}}
   100          {{#list-table
   101            source=sortedStates
   102            sortProperty=sortProperty
   103            sortDescending=sortDescending
   104            class="is-striped" as |t|}}
   105            {{#t.head}}
   106              <th class="is-narrow"></th>
   107              {{#t.sort-by prop="name"}}Name{{/t.sort-by}}
   108              {{#t.sort-by prop="state"}}State{{/t.sort-by}}
   109              <th>Last Event</th>
   110              {{#t.sort-by prop="events.lastObject.time"}}Time{{/t.sort-by}}
   111              <th>Volumes</th>
   112              <th>Addresses</th>
   113              <th>CPU</th>
   114              <th>Memory</th>
   115            {{/t.head}}
   116            {{#t.body as |row|}}
   117              {{task-row
   118                data-test-task-row=row.model.name
   119                task=row.model
   120                onClick=(action "taskClick" row.model.allocation row.model)}}
   121            {{/t.body}}
   122          {{/list-table}}
   123        {{else}}
   124          <div data-test-empty-tasks-list class="empty-message">
   125            <h3 data-test-empty-tasks-list-headline class="empty-message-headline">No Tasks</h3>
   126            <p data-test-empty-tasks-list-body class="empty-message-body">Allocations will not have tasks until they are in a running state.</p>
   127          </div>
   128        {{/if}}
   129      </div>
   130    </div>
   131  
   132    {{#if network.ports.length}}
   133      <div class="boxed-section" data-test-allocation-ports>
   134        <div class="boxed-section-head">
   135          Ports
   136        </div>
   137        <div class="boxed-section-body is-full-bleed">
   138          {{#list-table source=network.ports as |t|}}
   139            {{#t.head}}
   140              <th class="is-2">Name</th>
   141              <th class="is-1">Dynamic?</th>
   142              <th>Host Address</th>
   143              <th>Mapped Port</th>
   144            {{/t.head}}
   145            {{#t.body as |row|}}
   146              <tr data-test-allocation-port>
   147                <td data-test-allocation-port-name>{{row.model.name}}</td>
   148                <td data-test-allocation-port-is-dynamic>{{if row.model.isDynamic "Yes" "No"}}</td>
   149                <td data-test-allocation-port-address>
   150                  <a href="http://{{network.ip}}:{{row.model.port}}" target="_blank" rel="noopener noreferrer">{{network.ip}}:{{row.model.port}}</a>
   151                </td>
   152                <td data-test-allocation-port-to>{{row.model.to}}</td>
   153              </tr>
   154            {{/t.body}}
   155          {{/list-table}}
   156        </div>
   157      </div>
   158    {{/if}}
   159  
   160    {{#if services.length}}
   161      <div class="boxed-section">
   162        <div class="boxed-section-head">
   163          Services
   164        </div>
   165        <div class="boxed-section-body is-full-bleed">
   166          {{#list-table source=services as |t|}}
   167            {{#t.head}}
   168              <th class="is-2">Name</th>
   169              <th class="is-1">Port</th>
   170              <td>Tags</td>
   171              <td>Connect?</td>
   172              <td>Upstreams</td>
   173            {{/t.head}}
   174            {{#t.body as |row|}}
   175              <tr data-test-service>
   176                <td data-test-service-name>{{row.model.name}}</td>
   177                <td data-test-service-port>{{row.model.portLabel}}</td>
   178                <td data-test-service-tags>{{join ", " row.model.tags}}</td>
   179                <td data-test-service-connect>{{if row.model.connect "Yes" "No"}}</td>
   180                <td data-test-service-upstreams>
   181                  {{#each row.model.connect.sidecarService.proxy.upstreams as |upstream|}}
   182                    {{upstream.destinationName}}:{{upstream.localBindPort}}
   183                  {{/each}}
   184                </td>
   185              </tr>
   186            {{/t.body}}
   187          {{/list-table}}
   188        </div>
   189      </div>
   190    {{/if}}
   191  
   192    {{#if model.hasRescheduleEvents}}
   193      <div class="boxed-section" data-test-reschedule-events>
   194        <div class="boxed-section-head is-hollow">
   195          Reschedule Events
   196        </div>
   197        <div class="boxed-section-body">
   198          {{reschedule-event-timeline allocation=model}}
   199        </div>
   200      </div>
   201    {{/if}}
   202  
   203    {{#if model.wasPreempted}}
   204      <div class="boxed-section is-warning" data-test-was-preempted>
   205        <div class="boxed-section-head">Preempted By</div>
   206        <div class="boxed-section-body">
   207          {{#if (not preempter)}}
   208            <div class="empty-message">
   209              <h3 class="empty-message-headline">Allocation is gone</h3>
   210              <p class="empty-message-body">This allocation has been stopped and garbage collected.</p>
   211            </div>
   212          {{else}}
   213            <div class="boxed-section is-small">
   214              <div class="boxed-section-body inline-definitions">
   215                <span class="pair">
   216                  <span data-test-allocation-status class="tag {{preempter.statusClass}}">
   217                    {{preempter.clientStatus}}
   218                  </span>
   219                </span>
   220                <span class="pair">
   221                  <span class="term" data-test-allocation-name>{{preempter.name}}</span>
   222                  {{#link-to "allocations.allocation" preempter data-test-allocation-id}}{{preempter.shortId}}{{/link-to}}
   223                </span>
   224                <span class="pair job-link"><span class="term">Job</span>
   225                  {{#link-to "jobs.job" preempter.job (query-params jobNamespace=preempter.job.namespace.id) data-test-job-link}}{{preempter.job.name}}{{/link-to}}
   226                </span>
   227                <span class="pair job-priority"><span class="term">Priority</span>
   228                  <span data-test-job-priority>{{preempter.job.priority}}</span>
   229                </span>
   230                <span class="pair node-link"><span class="term">Client</span>
   231                  {{#link-to "clients.client" preempter.node data-test-client-link}}{{preempter.node.shortId}}{{/link-to}}
   232                </span>
   233                <span class="pair"><span class="term">Reserved CPU</span>
   234                  <span data-test-allocation-cpu>{{preempter.resources.cpu}} MHz</span>
   235                </span>
   236                <span class="pair"><span class="term">Reserved Memory</span>
   237                  <span data-test-allocation-memory>{{preempter.resources.memory}} MiB</span>
   238                </span>
   239              </div>
   240            </div>
   241          {{/if}}
   242        </div>
   243      </div>
   244    {{/if}}
   245  
   246    {{#if (and model.preemptedAllocations.isFulfilled model.preemptedAllocations.length)}}
   247      <div class="boxed-section" data-test-preemptions>
   248        <div class="boxed-section-head">Preempted Allocations</div>
   249        <div class="boxed-section-body">
   250          {{#list-table
   251            source=model.preemptedAllocations
   252            class="allocations is-isolated" as |t|}}
   253            {{#t.head}}
   254              <th class="is-narrow"></th>
   255              <th>ID</th>
   256              <th>Task Group</th>
   257              <th>Created</th>
   258              <th>Modified</th>
   259              <th>Status</th>
   260              <th>Version</th>
   261              <th>Node</th>
   262              <th>CPU</th>
   263              <th>Memory</th>
   264            {{/t.head}}
   265            {{#t.body as |row|}}
   266              {{allocation-row allocation=row.model context="job" data-test-allocation=row.model.id}}
   267            {{/t.body}}
   268          {{/list-table}}
   269        </div>
   270      </div>
   271    {{/if}}
   272  </section>