| 1 | {{define "app_instance"}}{{template "top" .}} |
| 2 | {{if .Flash}}<p class="banner">{{.Flash}}</p>{{end}} |
| 3 | {{if .FlashErr}}<p class="banner error">{{.FlashErr}}</p>{{end}} |
| 4 | {{template "appnav" .}} |
| 5 | <p><a href="{{.InstanceListURL}}">Instances</a></p> |
| 6 | {{with .InstanceDetail}} |
| 7 | <h2 class="instance-address">{{.Row.Host}} <a class="instance-open" href="https://{{.Row.Host}}" aria-label="{{$.InstanceCopy.Open}} {{.Row.Host}}">{{icon "external-link"}}</a></h2> |
| 8 | <p><a href="{{$.Nav}}/apps/{{$.AppName}}/logs?host={{.Row.Host}}">Logs</a></p> |
| 9 | {{if .Row.Restartable}}<form method="post" action="{{$.Base}}/apps/{{$.AppName}}/instances/{{.Row.Host}}/restart"> |
| 10 | <input type="hidden" name="csrf" value="{{$.CSRF}}"> |
| 11 | <button type="submit" class="btn-sm">{{$.BrowserRestartCopy.Button}}</button> |
| 12 | </form>{{end}} |
| 13 | <dl class="instance-facts"> |
| 14 | <dt>Health</dt><dd>{{.Row.HealthWord}}</dd> |
| 15 | <dt>{{$.InstanceCopy.LastReading}}</dt><dd>{{if .Row.Metrics.ObservedAt.IsZero}}—{{else}}<time title="{{fmtTime .Row.Metrics.ObservedAt}}">{{ago .Row.Metrics.ObservedAt}}</time>{{end}}</dd> |
| 16 | <dt>Channel</dt><dd><code>{{.Row.Channel}}</code></dd> |
| 17 | <dt>Layout</dt><dd>{{.Layout}}</dd> |
| 18 | {{if .Rollout}}<dt>{{$.SwapCopy.Installed}}</dt><dd><code>{{.Rollout.Installed}}</code></dd> |
| 19 | <dt>{{$.SwapCopy.Serving}}</dt><dd>{{if .Rollout.Serving}}<code>{{.Rollout.Serving}}</code>{{else}}—{{end}}</dd> |
| 20 | {{if .HoldText}}<dt>{{$.SwapCopy.Hold}}</dt><dd>{{.HoldText}}</dd>{{end}} |
| 21 | {{else}}<dt>{{$.InstanceCopy.Observed}}</dt><dd>{{if .Row.Version}}<code>{{.Row.Version}}</code>{{else}}—{{end}}</dd>{{end}} |
| 22 | <dt>{{$.InstanceCopy.Target}}</dt><dd>{{if .TargetErr}}Can't tell right now{{else if .TargetVersion}}<code>{{.TargetVersion}}</code>{{else}}—{{end}}</dd> |
| 23 | <dt>CPU</dt><dd>{{pct .Row.Metrics.CPUFrac}}{{if .Row.Metrics.SparkCPU}}<svg class="cellspark" aria-hidden="true" viewBox="0 0 240 40" preserveAspectRatio="none"><polyline fill="none" stroke="currentColor" points="{{.Row.Metrics.SparkCPU}}"/></svg>{{end}}</dd> |
| 24 | <dt>Memory</dt><dd>{{bytesOrDash .Row.Metrics.MemBytes}}{{if .Row.Metrics.SparkMem}}<svg class="cellspark" aria-hidden="true" viewBox="0 0 240 40" preserveAspectRatio="none"><polyline fill="none" stroke="currentColor" points="{{.Row.Metrics.SparkMem}}"/></svg>{{end}}</dd> |
| 25 | {{if .Aliases}}<dt>Web addresses</dt><dd>{{range .Aliases}}<div><a href="https://{{.}}">{{.}}</a></div>{{end}}</dd>{{end}} |
| 26 | </dl> |
| 27 | {{with .PromoteRetryText}}<p class="small">{{.}}</p>{{end}} |
| 28 | {{if .CanRetry}}<form method="post" action="{{$.Base}}/apps/{{$.AppName}}/instances/{{.Row.Host}}/retry"> |
| 29 | <input type="hidden" name="csrf" value="{{$.CSRF}}"> |
| 30 | <button type="submit" class="btn-sm">{{$.SwapCopy.RetryButton}}</button> |
| 31 | </form>{{end}} |
| 32 | {{with .RolloutNote}}<p class="small">{{.}}</p>{{end}} |
| 33 | {{if eq .Row.HealthWord "No readings"}}<p class="small">{{$.InstanceCopy.NoReadings}}</p>{{end}} |
| 34 | {{if eq .Row.HealthWord "Asleep"}}<p class="small">wakes on the next request</p>{{end}} |
| 35 | {{if and .Row.Version .TargetVersion (not .TargetErr) (ne .Row.Version .TargetVersion)}}<p class="small">{{$.InstanceCopy.PendingVersion}}</p>{{end}} |
| 36 | {{with .Updates}} |
| 37 | <section class="updates"> |
| 38 | <h3>{{$.UpdatesText "settings.page.heading"}}</h3> |
| 39 | {{if .NamedUnit}}<p class="small">{{.NamedUnit}}</p>{{else}} |
| 40 | {{if .NotEnforced}}<p class="banner warn">{{$.UpdatesText "settings.page.not-enforced"}}</p>{{end}} |
| 41 | {{with .StatusLine}}<p class="small">{{.}}</p>{{end}} |
| 42 | {{if .HasForm}}<form method="post" action="{{$.Base}}/apps/{{$.AppName}}/instances/{{$.InstanceDetail.Row.Host}}/updates"> |
| 43 | <input type="hidden" name="csrf" value="{{$.CSRF}}"> |
| 44 | <input type="hidden" name="form" value="updates">{{end}} |
| 45 | <div>{{if .AutoLive}}<label><input type="checkbox" name="auto" value="1"{{if eq .UpdatesWord "auto"}} checked{{end}}> {{$.UpdatesText "settings.page.auto-label"}}</label><input type="hidden" name="was_auto" value="{{if eq .UpdatesWord "auto"}}1{{else}}0{{end}}">{{else}}{{$.UpdatesText "settings.page.auto-label"}}: <code>{{.UpdatesWord}}</code> <span class="small">{{$.UpdatesText "settings.page.kept"}}</span>{{end}}</div> |
| 46 | <div>{{$.UpdatesText "settings.page.channel-label"}}: <code>{{.Channel}}</code>{{if .KeptChannel}} <span class="small">{{$.UpdatesText "settings.page.kept"}}</span>{{end}} |
| 47 | <div class="small">{{$.UpdatesText "settings.page.channel-hint"}}</div></div> |
| 48 | {{if .ShowMajor}}<div>{{if .MajorLive}}<label>{{$.UpdatesText "settings.page.major-label"}} <input type="number" min="0" name="major" value="{{.MajorInput}}"></label><input type="hidden" name="was_major" value="{{.MajorInput}}">{{with .MajorInherited}} <span class="small">{{.}}</span>{{end}}{{else}}{{$.UpdatesText "settings.page.major-label"}}: <code>{{.MajorShown}}</code> <span class="small">{{$.UpdatesText "settings.page.kept"}}</span>{{end}}</div>{{end}} |
| 49 | <div>{{if .PinLive}}<label>{{$.UpdatesText "settings.page.pin-label"}} <input type="text" name="pin" value="{{.PinInput}}"></label><input type="hidden" name="was_pin" value="{{.PinInput}}">{{else}}{{$.UpdatesText "settings.page.pin-label"}}: <code>{{.PinShown}}</code> <span class="small">{{$.UpdatesText "settings.page.kept"}}</span>{{end}}</div> |
| 50 | {{if .HasForm}}<button type="submit" class="btn-sm">{{$.UpdatesText "settings.page.save"}}</button> |
| 51 | </form> |
| 52 | {{if .Refusing}}<p class="small">{{$.UpdatesText "settings.page.refused-until-boxes"}}</p>{{end}}{{end}} |
| 53 | <form method="post" action="{{$.Base}}/apps/{{$.AppName}}/instances/{{$.InstanceDetail.Row.Host}}/updates/install"> |
| 54 | <input type="hidden" name="csrf" value="{{$.CSRF}}"> |
| 55 | {{if .Owner}}<label><input type="checkbox" name="fast_track" value="1"> {{$.UpdatesText "settings.page.fast-track"}}</label>{{end}} |
| 56 | <button type="submit" class="btn-sm">{{$.UpdatesText "settings.page.update-now"}}</button> |
| 57 | </form> |
| 58 | {{end}} |
| 59 | </section> |
| 60 | {{end}} |
| 61 | {{end}} |
| 62 | {{template "bottom" .}}{{end}} |
| 63 | |