Compare commits

...

2 Commits

Author SHA1 Message Date
0f0bdf19c3 swag generation fix
Some checks failed
continuous-integration/drone/push Build was killed
continuous-integration/drone Build is passing
2026-01-13 20:14:02 +11:00
6d1bb09167 add swagger ui link 2026-01-13 20:11:55 +11:00
8 changed files with 431 additions and 13 deletions

View File

@@ -38,7 +38,7 @@ func Header() templ.Component {
var templ_7745c5c3_Var2 templ.SafeURL var templ_7745c5c3_Var2 templ.SafeURL
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinURLErrs("/assets/css/output@" + version.Value + ".css") templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinURLErrs("/assets/css/output@" + version.Value + ".css")
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `core/header.templ`, Line: 12, Col: 61} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/core/header.templ`, Line: 12, Col: 61}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {

View File

@@ -27,6 +27,7 @@ templ Index(info BuildInfo) {
<a class="web2-button" href="/snapshots/hourly">Hourly Snapshots</a> <a class="web2-button" href="/snapshots/hourly">Hourly Snapshots</a>
<a class="web2-button" href="/snapshots/daily">Daily Snapshots</a> <a class="web2-button" href="/snapshots/daily">Daily Snapshots</a>
<a class="web2-button" href="/snapshots/monthly">Monthly Snapshots</a> <a class="web2-button" href="/snapshots/monthly">Monthly Snapshots</a>
<a class="web2-button" href="/swagger/">Swagger UI</a>
</div> </div>
</div> </div>
</section> </section>

View File

@@ -47,14 +47,14 @@ func Index(info BuildInfo) templ.Component {
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err return templ_7745c5c3_Err
} }
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<body class=\"flex flex-col min-h-screen web2-bg\"><main class=\"flex-grow web2-shell space-y-8\"><section class=\"web2-header\"><div class=\"flex flex-col gap-4 md:flex-row md:items-center md:justify-between\"><div><div class=\"web2-pill\">vCTP Console</div><h1 class=\"mt-3 text-4xl font-bold\">Build Intelligence Dashboard</h1><p class=\"mt-2 text-sm opacity-90\">A glossy, snapshot-ready view of what is running.</p></div><div class=\"flex flex-wrap gap-3\"><a class=\"web2-button\" href=\"/snapshots/hourly\">Hourly Snapshots</a> <a class=\"web2-button\" href=\"/snapshots/daily\">Daily Snapshots</a> <a class=\"web2-button\" href=\"/snapshots/monthly\">Monthly Snapshots</a></div></div></section><section class=\"grid gap-6 md:grid-cols-3\"><div class=\"web2-card\"><p class=\"text-xs uppercase tracking-[0.2em] text-slate-400\">Build Time</p><p class=\"mt-3 text-xl font-semibold\">") templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<body class=\"flex flex-col min-h-screen web2-bg\"><main class=\"flex-grow web2-shell space-y-8\"><section class=\"web2-header\"><div class=\"flex flex-col gap-4 md:flex-row md:items-center md:justify-between\"><div><div class=\"web2-pill\">vCTP Console</div><h1 class=\"mt-3 text-4xl font-bold\">Build Intelligence Dashboard</h1><p class=\"mt-2 text-sm opacity-90\">A glossy, snapshot-ready view of what is running.</p></div><div class=\"flex flex-wrap gap-3\"><a class=\"web2-button\" href=\"/snapshots/hourly\">Hourly Snapshots</a> <a class=\"web2-button\" href=\"/snapshots/daily\">Daily Snapshots</a> <a class=\"web2-button\" href=\"/snapshots/monthly\">Monthly Snapshots</a> <a class=\"web2-button\" href=\"/swagger/\">Swagger UI</a></div></div></section><section class=\"grid gap-6 md:grid-cols-3\"><div class=\"web2-card\"><p class=\"text-xs uppercase tracking-[0.2em] text-slate-400\">Build Time</p><p class=\"mt-3 text-xl font-semibold\">")
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err return templ_7745c5c3_Err
} }
var templ_7745c5c3_Var2 string var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(info.BuildTime) templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(info.BuildTime)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/index.templ`, Line: 37, Col: 59} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/views/index.templ`, Line: 38, Col: 59}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
@@ -67,7 +67,7 @@ func Index(info BuildInfo) templ.Component {
var templ_7745c5c3_Var3 string var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(info.SHA1Ver) templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(info.SHA1Ver)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/index.templ`, Line: 41, Col: 57} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/views/index.templ`, Line: 42, Col: 57}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
@@ -80,7 +80,7 @@ func Index(info BuildInfo) templ.Component {
var templ_7745c5c3_Var4 string var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(info.GoVersion) templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(info.GoVersion)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/index.templ`, Line: 45, Col: 59} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/views/index.templ`, Line: 46, Col: 59}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {

View File

@@ -140,7 +140,7 @@ func SnapshotListPage(title string, subtitle string, entries []SnapshotEntry) te
var templ_7745c5c3_Var5 string var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(title) templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/snapshots.templ`, Line: 34, Col: 49} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/views/snapshots.templ`, Line: 34, Col: 49}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
@@ -153,7 +153,7 @@ func SnapshotListPage(title string, subtitle string, entries []SnapshotEntry) te
var templ_7745c5c3_Var6 string var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(subtitle) templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(subtitle)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/snapshots.templ`, Line: 35, Col: 51} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/views/snapshots.templ`, Line: 35, Col: 51}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
@@ -166,7 +166,7 @@ func SnapshotListPage(title string, subtitle string, entries []SnapshotEntry) te
var templ_7745c5c3_Var7 string var templ_7745c5c3_Var7 string
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(len(entries)) templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(len(entries))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/snapshots.templ`, Line: 44, Col: 83} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/views/snapshots.templ`, Line: 44, Col: 83}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
@@ -184,7 +184,7 @@ func SnapshotListPage(title string, subtitle string, entries []SnapshotEntry) te
var templ_7745c5c3_Var8 string var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(entry.Label) templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(entry.Label)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/snapshots.templ`, Line: 49, Col: 71} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/views/snapshots.templ`, Line: 49, Col: 71}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
@@ -197,7 +197,7 @@ func SnapshotListPage(title string, subtitle string, entries []SnapshotEntry) te
var templ_7745c5c3_Var9 templ.SafeURL var templ_7745c5c3_Var9 templ.SafeURL
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinURLErrs(entry.Link) templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinURLErrs(entry.Link)
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views/snapshots.templ`, Line: 50, Col: 45} return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/views/snapshots.templ`, Line: 50, Col: 45}
} }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
if templ_7745c5c3_Err != nil { if templ_7745c5c3_Err != nil {

View File

@@ -4,6 +4,8 @@ import (
"encoding/json" "encoding/json"
) )
type JSONRawMessage json.RawMessage
type CloudEventReceived struct { type CloudEventReceived struct {
CloudEvent struct { CloudEvent struct {
ID string `json:"id"` ID string `json:"id"`
@@ -53,7 +55,7 @@ type CloudEventReceived struct {
Value string `json:"Value"` Value string `json:"Value"`
} `json:"Vm"` } `json:"Vm"`
} `json:"Vm"` } `json:"Vm"`
ConfigSpec *json.RawMessage `json:"configSpec"` ConfigSpec *JSONRawMessage `json:"configSpec" swaggertype:"object"`
ConfigChanges *ConfigChangesReceived `json:"configChanges"` // Modified to separate struct ConfigChanges *ConfigChangesReceived `json:"configChanges"` // Modified to separate struct
} `json:"data"` } `json:"data"`
} `json:"cloudEvent"` } `json:"cloudEvent"`

View File

@@ -665,7 +665,156 @@ const docTemplate = `{
}, },
"definitions": { "definitions": {
"models.CloudEventReceived": { "models.CloudEventReceived": {
"type": "object" "type": "object",
"properties": {
"cloudEvent": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"ChainId": {
"type": "integer"
},
"ChangeTag": {
"type": "string"
},
"ComputeResource": {
"type": "object",
"properties": {
"ComputeResource": {
"type": "object",
"properties": {
"Type": {
"type": "string"
},
"Value": {
"type": "string"
}
}
},
"Name": {
"type": "string"
}
}
},
"CreatedTime": {
"description": "Modified from time.Time",
"type": "string"
},
"Datacenter": {
"type": "object",
"properties": {
"Datacenter": {
"type": "object",
"properties": {
"Type": {
"type": "string"
},
"Value": {
"type": "string"
}
}
},
"Name": {
"type": "string"
}
}
},
"Ds": {},
"Dvs": {},
"FullFormattedMessage": {
"type": "string"
},
"Host": {
"type": "object",
"properties": {
"Host": {
"type": "object",
"properties": {
"Type": {
"type": "string"
},
"Value": {
"type": "string"
}
}
},
"Name": {
"type": "string"
}
}
},
"Key": {
"type": "integer"
},
"Net": {},
"NewParent": {
"$ref": "#/definitions/models.CloudEventResourcePool"
},
"OldParent": {
"$ref": "#/definitions/models.CloudEventResourcePool"
},
"SrcTemplate": {
"$ref": "#/definitions/models.CloudEventVm"
},
"Template": {
"type": "boolean"
},
"UserName": {
"type": "string"
},
"Vm": {
"type": "object",
"properties": {
"Name": {
"type": "string"
},
"Vm": {
"type": "object",
"properties": {
"Type": {
"type": "string"
},
"Value": {
"type": "string"
}
}
}
}
},
"configChanges": {
"description": "Modified to separate struct",
"allOf": [
{
"$ref": "#/definitions/models.ConfigChangesReceived"
}
]
},
"configSpec": {
"type": "object"
}
}
},
"id": {
"type": "string"
},
"source": {
"type": "string"
},
"specversion": {
"type": "string"
},
"time": {
"description": "Modified from time.Time",
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
}, },
"models.CloudEventResourcePool": { "models.CloudEventResourcePool": {
"type": "object", "type": "object",
@@ -705,6 +854,14 @@ const docTemplate = `{
} }
} }
}, },
"models.ConfigChangesReceived": {
"type": "object",
"properties": {
"modified": {
"type": "string"
}
}
},
"models.ImportReceived": { "models.ImportReceived": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@@ -654,7 +654,156 @@
}, },
"definitions": { "definitions": {
"models.CloudEventReceived": { "models.CloudEventReceived": {
"type": "object" "type": "object",
"properties": {
"cloudEvent": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"ChainId": {
"type": "integer"
},
"ChangeTag": {
"type": "string"
},
"ComputeResource": {
"type": "object",
"properties": {
"ComputeResource": {
"type": "object",
"properties": {
"Type": {
"type": "string"
},
"Value": {
"type": "string"
}
}
},
"Name": {
"type": "string"
}
}
},
"CreatedTime": {
"description": "Modified from time.Time",
"type": "string"
},
"Datacenter": {
"type": "object",
"properties": {
"Datacenter": {
"type": "object",
"properties": {
"Type": {
"type": "string"
},
"Value": {
"type": "string"
}
}
},
"Name": {
"type": "string"
}
}
},
"Ds": {},
"Dvs": {},
"FullFormattedMessage": {
"type": "string"
},
"Host": {
"type": "object",
"properties": {
"Host": {
"type": "object",
"properties": {
"Type": {
"type": "string"
},
"Value": {
"type": "string"
}
}
},
"Name": {
"type": "string"
}
}
},
"Key": {
"type": "integer"
},
"Net": {},
"NewParent": {
"$ref": "#/definitions/models.CloudEventResourcePool"
},
"OldParent": {
"$ref": "#/definitions/models.CloudEventResourcePool"
},
"SrcTemplate": {
"$ref": "#/definitions/models.CloudEventVm"
},
"Template": {
"type": "boolean"
},
"UserName": {
"type": "string"
},
"Vm": {
"type": "object",
"properties": {
"Name": {
"type": "string"
},
"Vm": {
"type": "object",
"properties": {
"Type": {
"type": "string"
},
"Value": {
"type": "string"
}
}
}
}
},
"configChanges": {
"description": "Modified to separate struct",
"allOf": [
{
"$ref": "#/definitions/models.ConfigChangesReceived"
}
]
},
"configSpec": {
"type": "object"
}
}
},
"id": {
"type": "string"
},
"source": {
"type": "string"
},
"specversion": {
"type": "string"
},
"time": {
"description": "Modified from time.Time",
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
}, },
"models.CloudEventResourcePool": { "models.CloudEventResourcePool": {
"type": "object", "type": "object",
@@ -694,6 +843,14 @@
} }
} }
}, },
"models.ConfigChangesReceived": {
"type": "object",
"properties": {
"modified": {
"type": "string"
}
}
},
"models.ImportReceived": { "models.ImportReceived": {
"type": "object", "type": "object",
"properties": { "properties": {

View File

@@ -1,5 +1,101 @@
definitions: definitions:
models.CloudEventReceived: models.CloudEventReceived:
properties:
cloudEvent:
properties:
data:
properties:
ChainId:
type: integer
ChangeTag:
type: string
ComputeResource:
properties:
ComputeResource:
properties:
Type:
type: string
Value:
type: string
type: object
Name:
type: string
type: object
CreatedTime:
description: Modified from time.Time
type: string
Datacenter:
properties:
Datacenter:
properties:
Type:
type: string
Value:
type: string
type: object
Name:
type: string
type: object
Ds: {}
Dvs: {}
FullFormattedMessage:
type: string
Host:
properties:
Host:
properties:
Type:
type: string
Value:
type: string
type: object
Name:
type: string
type: object
Key:
type: integer
Net: {}
NewParent:
$ref: '#/definitions/models.CloudEventResourcePool'
OldParent:
$ref: '#/definitions/models.CloudEventResourcePool'
SrcTemplate:
$ref: '#/definitions/models.CloudEventVm'
Template:
type: boolean
UserName:
type: string
Vm:
properties:
Name:
type: string
Vm:
properties:
Type:
type: string
Value:
type: string
type: object
type: object
configChanges:
allOf:
- $ref: '#/definitions/models.ConfigChangesReceived'
description: Modified to separate struct
configSpec:
type: object
type: object
id:
type: string
source:
type: string
specversion:
type: string
time:
description: Modified from time.Time
type: string
type:
type: string
type: object
type: object type: object
models.CloudEventResourcePool: models.CloudEventResourcePool:
properties: properties:
@@ -25,6 +121,11 @@ definitions:
type: string type: string
type: object type: object
type: object type: object
models.ConfigChangesReceived:
properties:
modified:
type: string
type: object
models.ImportReceived: models.ImportReceived:
properties: properties:
Cluster: Cluster: