Skip to content

Commit dbc9659

Browse files
committed
Fetch server metadata
1 parent e8bf4d4 commit dbc9659

6 files changed

Lines changed: 43 additions & 0 deletions

File tree

‎agent/cmd/agent/main.go‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,7 @@ func (a *Agent) reportStatus(includeResources bool) {
674674

675675
if includeResources {
676676
report.Resources = getSystemStats()
677+
report.Meta = getSystemMeta()
677678
}
678679

679680
containers, err := container.List()
@@ -1206,6 +1207,19 @@ func getSystemStats() *agenthttp.Resources {
12061207
return resources
12071208
}
12081209

1210+
func getSystemMeta() map[string]string {
1211+
meta := map[string]string{
1212+
"arch": runtime.GOARCH,
1213+
"os": runtime.GOOS,
1214+
}
1215+
1216+
if hostname, err := os.Hostname(); err == nil {
1217+
meta["hostname"] = hostname
1218+
}
1219+
1220+
return meta
1221+
}
1222+
12091223
func getPublicIP() string {
12101224
ip, err := sockaddr.GetPublicIP()
12111225
if err == nil && ip != "" {

‎agent/internal/http/client.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ type StatusReport struct {
200200
Resources *Resources `json:"resources,omitempty"`
201201
PublicIP string `json:"publicIp,omitempty"`
202202
PrivateIP string `json:"privateIp,omitempty"`
203+
Meta map[string]string `json:"meta,omitempty"`
203204
Containers []ContainerStatus `json:"containers"`
204205
}
205206

‎web/app/(dashboard)/dashboard/servers/[id]/page.tsx‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,20 @@ export default async function ServerDetailPage({
111111
: "—"}
112112
</p>
113113
</div>
114+
{server.meta && (
115+
<>
116+
<div>
117+
<p className="text-sm text-muted-foreground">OS / Arch</p>
118+
<p>
119+
{server.meta.os || "—"} / {server.meta.arch || "—"}
120+
</p>
121+
</div>
122+
<div>
123+
<p className="text-sm text-muted-foreground">Hostname</p>
124+
<p className="font-mono">{server.meta.hostname || "—"}</p>
125+
</div>
126+
</>
127+
)}
114128
</div>
115129
</CardContent>
116130
</Card>

‎web/app/api/v1/agent/status/route.ts‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type StatusReport = {
1919
};
2020
publicIp?: string;
2121
privateIp?: string;
22+
meta?: Record<string, string>;
2223
containers: ContainerStatus[];
2324
};
2425

@@ -143,6 +144,10 @@ export async function POST(request: NextRequest) {
143144

144145
updateData.privateIp = report.privateIp || null;
145146

147+
if (report.meta) {
148+
updateData.meta = report.meta;
149+
}
150+
146151
await db.update(servers).set(updateData).where(eq(servers.id, serverId));
147152

148153
const reportedDeploymentIds = report.containers

‎web/db/queries.ts‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ export async function getServerDetails(id: string) {
151151
resourcesCpu: servers.resourcesCpu,
152152
resourcesMemory: servers.resourcesMemory,
153153
resourcesDisk: servers.resourcesDisk,
154+
meta: servers.meta,
154155
createdAt: servers.createdAt,
155156
agentToken: servers.agentToken,
156157
})

‎web/db/schema.ts‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
boolean,
55
index,
66
integer,
7+
jsonb,
78
pgTable,
89
text,
910
timestamp,
@@ -101,6 +102,12 @@ export const accountRelations = relations(account, ({ one }) => ({
101102
}),
102103
}));
103104

105+
type ServerMeta = {
106+
arch?: string;
107+
os?: string;
108+
hostname?: string;
109+
};
110+
104111
export const servers = pgTable("servers", {
105112
id: text("id").primaryKey(),
106113
name: text("name").notNull(),
@@ -118,6 +125,7 @@ export const servers = pgTable("servers", {
118125
resourcesCpu: integer("resources_cpu"),
119126
resourcesMemory: integer("resources_memory"),
120127
resourcesDisk: integer("resources_disk"),
128+
meta: jsonb("meta").$type<ServerMeta>(),
121129
agentToken: text("agent_token"),
122130
tokenCreatedAt: timestamp("token_created_at", { withTimezone: true }),
123131
tokenUsedAt: timestamp("token_used_at", { withTimezone: true }),

0 commit comments

Comments
 (0)