{{ $inputs := (default dict (index (default dict .nuon.inputs) "inputs")) }} {{ $root_domain := (dig "root_domain" "" $inputs) }} {{ $public_domain := (dig "outputs" "nuon_dns" "public_domain" "name" $root_domain .nuon.sandbox) }}
{{/* Setup runbooks (config label: type=setup). The README template can't read runbook labels at render time, so list each type=setup runbook here with its completion check. Keep in sync as setup runbooks are added/removed. */}} {{ $slackDone := false }}{{ with index (default dict .nuon.actions.workflows) "sync_slack_secrets" }}{{ if eq .status "finished" }}{{ $slackDone = true }}{{ end }}{{ end }} {{ $setupRunbooks := list (dict "name" "slack_setup" "label" "Slack" "complete" $slackDone) }} {{ $incomplete := list }}{{ range $setupRunbooks }}{{ if not .complete }}{{ $incomplete = append $incomplete . }}{{ end }}{{ end }} {{ if gt (len $incomplete) 0 }} Some setup is still required. Once the install is provisioned, finish the setup runbook(s) below:
-
{{ range $incomplete }}
- {{ .label }} {{ end }}
{{ $wfOutputs := dict }}{{ $wfActionID := "" }}{{ with (index (default dict .nuon.actions.workflows) "ctl_api_query_workflows_by_type") }}{{ with .outputs }}{{ $wfOutputs = . }}{{ end }}{{ $wfActionID = dig "id" "" . }}{{ end }}
{{ with (index (default dict .nuon.actions.workflows) "ctl_api_query_workflows_by_type") }} {{ $wfData := dict }}{{ with .outputs }}{{ $wfData = . }}{{ end }} {{ $wfRows := dig "workflows" (list) $wfData }} {{ if and .populated (eq .status "finished") (gt (len $wfRows) 0) }}
{{ $topWf := $wfRows }}{{ if gt (len $wfRows) 5 }}{{ $topWf = slice $wfRows 0 5 }}{{ end }} {{ range $wf := $topWf }} {{ $status := dig "workflow_status" "" $wf }} {{ $email := dig "created_by_email" "" $wf }} {{ $createdByID := dig "created_by_id" "" $wf }} {{ $createdByLabel := $email }}{{ if not $createdByLabel }}{{ $createdByLabel = default "—" $createdByID }}{{ end }} {{ $wfID := dig "workflow_id" "" $wf }} {{ $curStep := dig "latest_step_name" "" $wf }}{{ $curStatus := dig "latest_step_status" "" $wf }}{{ $curGroup := dig "latest_step_group_name" "" $wf }}| Status | Name | Latest Step | Created By | Started | Finished | Details | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ if $status }}{{ else }}—{{ end }} | {{ dig "workflow_name" "—" $wf }}{{ with $wfID }}{{ . }}{{ end }} |
{{ if $curStep }}{{ $curStep }}{{ with $curStatus }} {{ end }}{{ with $curGroup }} {{ . }}{{ end }}{{ else }}—{{ end }} |
{{ $createdByLabel }} | {{ with dig "workflow_started_at" "" $wf }}{{ else }}—{{ end }} | {{ with dig "workflow_finished_at" "" $wf }}{{ else }}—{{ end }} |
<nuon-panel heading="Workflow: {{ dig "workflow_name" (dig "workflow_id" "—" $wf) $wf }}" trigger="View" size="3/4"> {{ $ownerID := dig "owner_id" "" $wf }}{{ $ownerName := dig "owner_name" "" $wf }}{{ $ownerType := dig "owner_type" "" $wf }} {{ $orgID := dig "org_id" "" $wf }}{{ $orgName := dig "org_name" "" $wf }}
{{ end }} |
{{ else if and .populated (eq .status "finished") }}
No workflows returned by the last run of ctl_api_query_workflows_by_type.
{{ else }}
Waiting on ctl_api_query_workflows_by_type. Run it to populate this section.
{{ end }} {{ else }}
Waiting on ctl_api_query_workflows_by_type. Run it to populate this section.
{{ end }}
{{ $runnersAction := default dict (index (default dict .nuon.actions.workflows) "inspect_runners") }} {{ $installsAction := default dict (index (default dict .nuon.actions.workflows) "inspect_installs") }} {{ $orgsAction := default dict (index (default dict .nuon.actions.workflows) "inspect_orgs") }} {{ $appsAction := default dict (index (default dict .nuon.actions.workflows) "inspect_apps") }} {{ $runnersOutputs := default dict (dig "outputs" dict $runnersAction) }} {{ $installsOutputs := default dict (dig "outputs" dict $installsAction) }} {{ $runnersSteps := dig "steps" dict $runnersOutputs }} {{ $installsSteps := dig "steps" dict $installsOutputs }} {{ $orgsSteps := dig "steps" dict (default dict (dig "outputs" dict $orgsAction)) }} {{ $appsSteps := dig "steps" dict (default dict (dig "outputs" dict $appsAction)) }}
{{ $installs := dig "installs" (dict) $installsSteps }} {{
| Name | Status | Updated | Details | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{ $installName }}{{ $installID }}
|
{{ if $runnerStatus }}{{ end }}{{ if $sandboxStatus }}{{ end }}{{ if $componentStatus }}{{ end }} |
{{ with dig "updated_at" "" $install }}{{ else }}—{{ end }} |
{{ $appID := dig "app_id" "" $install }}{{ $appName := dig $appID "" $appsByID }}
{{ $orgID := dig "org_id" "" $install }}{{ $orgName := dig $orgID "" $installOrgsByID }}
{{ end }} |
{{ else }}
No installs reported.
{{ end }}
{{ $runners := dig "runners" (dict) $runnersSteps }} {{
| Owner | Healthcheck | Heartbeat | Details | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{ $ownerLabel }}{{ $runnerID }}
|
{{ with dig "latest_health_check_status" "" $runner }}{{ else }}—{{ end }} | {{ with dig "latest_heart_beat_created_at" "" $runner }}{{ else }}—{{ end }} |
{{ $processes := default (list) (dig "process_uptimes" nil $runner) }}
{{ if gt (len $processes) 0 }} Processes{{ range $p := $processes }} {{ end }}
{{ end }} {{ end }} |
{{ else }}
No runners reported.
{{ end }}
{{ $api := dict }}{{ $apiActionID := "" }}{{ with index .nuon.actions.workflows "api_status" }}{{ with .outputs }}{{ $api = . }}{{ end }}{{ $apiActionID = dig "id" "" . }}{{ end }} {{ $dash := dict }}{{ $dashActionID := "" }}{{ with index .nuon.actions.workflows "dashboard_status" }}{{ with .outputs }}{{ $dash = . }}{{ end }}{{ $dashActionID = dig "id" "" . }}{{ end }} {{ $apiSteps := dig "steps" (dict) $api }} {{ $dashSteps := dig "steps" (dict) $dash }}
{{ range $step := list "alb-healthcheck-ctl-api-public" "alb-healthcheck-ctl-api-admin" "alb-healthcheck-ctl-api-runner" }}{{ $indicator := dig $step "indicator" "" $apiSteps }}{{ if eq $indicator "🟢" }}{{ else if eq $indicator "🔴" }}{{ else }}{{ end }}{{ end }}<nuon-label-badge label="version:{{ dig "ctl_api_version" "unknown" $api }}"><nuon-label-badge label="git:{{ dig "ctl_api_git_ref" "unknown" $api }}">Open ↗
{{ if not (dig "updated_at" "" $api) }}Waiting on api_status. Run it to populate this section.{{ end }}
{{ $indicator := dig "alb-healthcheck-dashboard-ui" "indicator" "" $dashSteps }}{{ if eq $indicator "🟢" }}{{ else if eq $indicator "🔴" }}{{ else }}{{ end }}<nuon-label-badge label="version:{{ dig "dashboard_ui_version" "unknown" $dash }}"><nuon-label-badge label="git:{{ dig "dashboard_ui_git_ref" "unknown" $dash }}">Open ↗
{{ if not (dig "updated_at" "" $dash) }}Waiting on dashboard_status. Run it to populate this section.{{ end }}
{{ $migAction := default dict (index (default dict .nuon.actions.workflows) "inspect_migrations") }} {{ $migOutputs := default dict (dig "outputs" dict $migAction) }} {{ $migSteps := dig "steps" dict $migOutputs }} {{ $migrations := dig "migrations" (dict) $migSteps }}
{{ if gt (len $migrations) 0 }} {{ $themeMap := dict "applied" "success" "in_progress" "info" "error" "error" "unknown" "neutral" }}
{{ range $_, $m := $migrations }} {{ $status := dig "status" "" $m }} {{ end }}| Name | Status | Created |
|---|---|---|
{{ dig "name" "—" $m }}{{ dig "id" "—" $m }}
|
{{ if $status }}{{ else }}—{{ end }} | {{ with dig "created_at" "" $m }}{{ else }}—{{ end }} |
{{ else if not (dig "updated_at" "" $migOutputs) }}Waiting on inspect_migrations. Run it to populate this section.{{ else }}No migrations reported.{{ end }}
{{ $stackStatus := dig "status" "" .nuon.install_stack }} {{ $stackOutputs := default dict .nuon.install_stack.outputs }}
| Status | {{ if $stackStatus }}{{ else }}—{{ end }} |
| Cloud | AWS |
| Account | {{ dig "account_id" "—" $stackOutputs }} |
| Region | {{ default "—" .nuon.cloud_account.aws.region }} |
| VPC | {{ dig "vpc_id" "—" $stackOutputs }} |
{{ $sandboxStatus := dig "status" "" .nuon.sandbox }} {{ $cluster := dig "outputs" "cluster" (dict) .nuon.sandbox }}
| Status | {{ if $sandboxStatus }}{{ else }}—{{ end }} |
| Name | {{ dig "name" "—" $cluster }} |
| Version | {{ coalesce (dig "version" nil $cluster) (dig "platform_version" nil $cluster) "—" }} |
| Endpoint | {{ with dig "endpoint" "" $cluster }}{{ . }}{{ else }}—{{ end }} |
| ARN | {{ with dig "arn" "" $cluster }}{{ . }}{{ else }}—{{ end }} |
{{ $dbAction := default dict (index (default dict .nuon.actions.workflows) "inspect_postgres") }} {{ $dbOutputs := default dict (dig "outputs" dict $dbAction) }} {{ $databases := dig "databases" (dict) (dig "steps" dict $dbOutputs) }} {{ $chAction := default dict (index (default dict .nuon.actions.workflows) "inspect_clickhouse") }} {{ $chOutputs := default dict (dig "outputs" dict $chAction) }} {{ $clickhouse := dig "clickhouse" (dict) (dig "steps" dict $chOutputs) }}
{{ if gt (len $databases) 0 }}
{{ range $label, $r := $databases }} {{ end }}| Postgres | CPU | Mem | Disk | DB load |
|---|---|---|---|---|
| {{ $label }} | {{ $v := dig "cpu_pct" nil $r }}{{ if kindIs "invalid" $v }}—{{ else }}{{ $v }}%{{ end }} | {{ $v := dig "mem_used_pct" nil $r }}{{ if kindIs "invalid" $v }}—{{ else }}{{ $v }}%{{ end }} | {{ $v := dig "disk_used_pct" nil $r }}{{ if kindIs "invalid" $v }}—{{ else }}{{ $v }}%{{ end }} | {{ $v := dig "db_load" nil $r }}{{ if kindIs "invalid" $v }}—{{ else }}{{ $v }}{{ end }} |
{{ end }}
{{ if gt (len $clickhouse) 0 }}
{{ range $label, $r := $clickhouse }} {{ end }}| ClickHouse | CPU | Mem | Disk | |
|---|---|---|---|---|
| {{ $label }} | {{ $v := dig "cpu_pct" nil $r }}{{ if kindIs "invalid" $v }}—{{ else }}{{ $v }}%{{ end }} | {{ $v := dig "mem_used_pct" nil $r }}{{ if kindIs "invalid" $v }}—{{ else }}{{ $v }}%{{ end }} | {{ $v := dig "disk_used_pct" nil $r }}{{ if kindIs "invalid" $v }}—{{ else }}{{ $v }}%{{ end }} |
{{ end }}
{{ if and (eq (len $databases) 0) (eq (len $clickhouse) 0) }}
Run inspect_databases to populate this section.
{{ end }}