carlos / platform Public

Clone
git clone https://amadan.net/carlos/platform

Plain git — no account needed to clone.

Download

Download this file

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