github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/ui/app/templates/jobs/job/index.hbs (about) 1 {{#global-header class="page-header"}} 2 {{#each breadcrumbs as |breadcrumb|}} 3 {{#link-to params=breadcrumb.args class="breadcrumb"}}{{breadcrumb.label}}{{/link-to}} 4 {{/each}} 5 {{/global-header}} 6 {{#gutter-menu class="page-body" onNamespaceChange=(action "gotoJobs")}} 7 {{partial "jobs/job/subnav"}} 8 <section class="section"> 9 <h1 class="title"> 10 {{model.name}} 11 <span class="bumper-left tag {{model.statusClass}}">{{model.status}}</span> 12 {{#if model.periodic}} 13 <span class="tag is-hollow">periodic</span> 14 {{else if model.parameterized}} 15 <span class="tag is-hollow">parameterized</span> 16 {{/if}} 17 </h1> 18 19 <div class="boxed-section job-stats"> 20 <div class="boxed-section-body"> 21 <span><strong>Type:</strong> {{model.type}} | </span> 22 <span><strong>Priority:</strong> {{model.priority}} </span> 23 {{#if (and model.namespace system.shouldShowNamespaces)}} 24 <span> | <strong>Namespace:</strong> {{model.namespace.name}}</span> 25 {{/if}} 26 </div> 27 </div> 28 29 <div class="boxed-section"> 30 <div class="boxed-section-head"> 31 <div>Allocation Status <span class="badge is-white">{{taskGroups.length}}</span></div> 32 </div> 33 <div class="boxed-section-body"> 34 {{#allocation-status-bar allocationContainer=model class="split-view" as |chart|}} 35 <ol class="legend"> 36 {{#each chart.data as |datum index|}} 37 <li class="{{datum.className}} {{if (eq datum.index chart.activeDatum.index) "is-active"}} {{if (eq datum.value 0) "is-empty"}}"> 38 <span class="color-swatch {{if datum.className datum.className (concat "swatch-" index)}}" /> 39 <span class="value">{{datum.value}}</span> 40 <span class="label"> 41 {{datum.label}} 42 </span> 43 </li> 44 {{/each}} 45 </ol> 46 {{/allocation-status-bar}} 47 </div> 48 </div> 49 50 {{#if model.hasPlacementFailures}} 51 <div class="boxed-section is-danger placement-failures"> 52 <div class="boxed-section-head"> 53 Placement Failures 54 </div> 55 <div class="boxed-section-body"> 56 {{#each model.taskGroups as |taskGroup|}} 57 {{#if taskGroup.placementFailures}} 58 {{#with taskGroup.placementFailures as |failures|}} 59 <h3 class="title is-5"> 60 {{taskGroup.name}} 61 <span class="badge is-light">{{inc failures.coalescedFailures}} unplaced</span> 62 </h3> 63 <ul class="simple-list"> 64 {{#if (eq failures.nodesEvaluated 0)}} 65 <li>No nodes were eligible for evaluation</li> 66 {{/if}} 67 {{#each-in failures.nodesAvailable as |datacenter available|}} 68 {{#if (eq available 0)}} 69 <li>No nodes are available in datacenter {{datacenter}}</li> 70 {{/if}} 71 {{/each-in}} 72 {{#each-in failures.classFiltered as |class count|}} 73 <li>Class {{class}} filtered {{count}} {{pluralize "node" count}}</li> 74 {{/each-in}} 75 {{#each-in failures.constraintFiltered as |constraint count|}} 76 <li>Constraint <code>{{constraint}}</code> filtered {{count}} {{pluralize "node" count}}</li> 77 {{/each-in}} 78 {{#if failures.nodesExhausted}} 79 <li>Resources exhausted on {{failures.nodesExhausted}} {{pluralize "node" failures.nodesExhausted}}</li> 80 {{/if}} 81 {{#each-in failures.classExhausted as |class count|}} 82 <li>Class {{class}} exhausted on {{count}} {{pluralize "node" count}}</li> 83 {{/each-in}} 84 {{#each-in failures.dimensionExhausted as |dimension count|}} 85 <li>Dimension {{dimension}} exhausted on {{count}} {{pluralize "node" count}}</li> 86 {{/each-in}} 87 {{#each-in failures.quotaExhausted as |quota dimension|}} 88 <li>Quota limit hit {{dimension}}</li> 89 {{/each-in}} 90 {{#each-in failures.scores as |name score|}} 91 <li>Score {{name}} = {{score}}</li> 92 {{/each-in}} 93 </ul> 94 {{/with}} 95 {{/if}} 96 {{/each}} 97 </div> 98 </div> 99 {{/if}} 100 101 {{#if model.runningDeployment}} 102 <div class="boxed-section is-info active-deployment"> 103 <div class="boxed-section-head"> 104 <div class="boxed-section-row"> 105 Active Deployment 106 <span class="badge is-white is-subtle bumper-left">{{model.runningDeployment.shortId}}</span> 107 {{#if model.runningDeployment.version.submitTime}} 108 <span class="pull-right submit-time">{{moment-from-now model.runningDeployment.version.submitTime}}</span> 109 {{/if}} 110 </div> 111 <div class="boxed-section-row"> 112 <span class="tag is-info is-outlined">Running</span> 113 {{#if model.runningDeployment.requiresPromotion}} 114 <span class="tag bumper-left is-warning no-text-transform">Deployment is running but requires promotion</span> 115 {{/if}} 116 </div> 117 </div> 118 <div class="boxed-section-body with-foot"> 119 {{#job-deployment-details deployment=model.runningDeployment as |d|}} 120 {{d.metrics}} 121 {{#if isShowingDeploymentDetails}} 122 {{d.taskGroups}} 123 {{d.allocations}} 124 {{/if}} 125 {{/job-deployment-details}} 126 </div> 127 <div class="boxed-section-foot"> 128 <a class="pull-right active-deployment-details-toggle" {{action (toggle "isShowingDeploymentDetails" this)}}> 129 {{if isShowingDeploymentDetails "Hide" "Show"}} deployment task groups and allocations 130 </a> 131 </div> 132 </div> 133 {{/if}} 134 135 <div class="boxed-section"> 136 <div class="boxed-section-head"> 137 Task Groups 138 </div> 139 <div class="boxed-section-body is-full-bleed"> 140 {{#list-pagination 141 source=sortedTaskGroups 142 sortProperty=sortProperty 143 sortDescending=sortDescending as |p|}} 144 {{#list-table 145 source=p.list 146 sortProperty=sortProperty 147 sortDescending=sortDescending as |t|}} 148 {{#t.head}} 149 {{#t.sort-by prop="name"}}Name{{/t.sort-by}} 150 {{#t.sort-by prop="count"}}Count{{/t.sort-by}} 151 {{#t.sort-by prop="queuedOrStartingAllocs" class="is-3"}}Allocation Status{{/t.sort-by}} 152 {{#t.sort-by prop="reservedCPU"}}Reserved CPU{{/t.sort-by}} 153 {{#t.sort-by prop="reservedMemory"}}Reserved Memory{{/t.sort-by}} 154 {{#t.sort-by prop="reservedEphemeralDisk"}}Reserved Disk{{/t.sort-by}} 155 {{/t.head}} 156 {{#t.body as |row|}} 157 {{task-group-row taskGroup=row.model onClick=(action "gotoTaskGroup" row.model)}} 158 {{/t.body}} 159 {{/list-table}} 160 {{/list-pagination}} 161 </div> 162 </div> 163 164 <div class="boxed-section"> 165 <div class="boxed-section-head"> 166 Evaluations 167 </div> 168 <div class="boxed-section-body is-full-bleed evaluations"> 169 {{#list-table source=sortedEvaluations as |t|}} 170 {{#t.head}} 171 <th>ID</th> 172 <th>Priority</th> 173 <th>Triggered By</th> 174 <th>Status</th> 175 <th>Placement Failures</th> 176 {{/t.head}} 177 {{#t.body as |row|}} 178 <tr> 179 <td>{{row.model.shortId}}</td> 180 <td>{{row.model.priority}}</td> 181 <td>{{row.model.triggeredBy}}</td> 182 <td>{{row.model.status}}</td> 183 <td> 184 {{#if (eq row.model.status "blocked")}} 185 N/A - In Progress 186 {{else if row.model.hasPlacementFailures}} 187 True 188 {{else}} 189 False 190 {{/if}} 191 </td> 192 </tr> 193 {{/t.body}} 194 {{/list-table}} 195 </div> 196 </div> 197 </section> 198 {{/gutter-menu}}