mirror of
https://github.com/lordmathis/llamactl.git
synced 2025-11-05 16:44:22 +00:00
Add Docker badge to UI
This commit is contained in:
@@ -221,14 +221,33 @@ func (i *Process) MarshalJSON() ([]byte, error) {
|
|||||||
i.mu.RLock()
|
i.mu.RLock()
|
||||||
defer i.mu.RUnlock()
|
defer i.mu.RUnlock()
|
||||||
|
|
||||||
|
// Determine if docker is enabled for this instance's backend
|
||||||
|
var dockerEnabled bool
|
||||||
|
if i.options != nil {
|
||||||
|
switch i.options.BackendType {
|
||||||
|
case backends.BackendTypeLlamaCpp:
|
||||||
|
if i.globalBackendSettings != nil && i.globalBackendSettings.LlamaCpp.Docker != nil && i.globalBackendSettings.LlamaCpp.Docker.Enabled {
|
||||||
|
dockerEnabled = true
|
||||||
|
}
|
||||||
|
case backends.BackendTypeVllm:
|
||||||
|
if i.globalBackendSettings != nil && i.globalBackendSettings.VLLM.Docker != nil && i.globalBackendSettings.VLLM.Docker.Enabled {
|
||||||
|
dockerEnabled = true
|
||||||
|
}
|
||||||
|
case backends.BackendTypeMlxLm:
|
||||||
|
// MLX does not support docker currently
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Use anonymous struct to avoid recursion
|
// Use anonymous struct to avoid recursion
|
||||||
type Alias Process
|
type Alias Process
|
||||||
return json.Marshal(&struct {
|
return json.Marshal(&struct {
|
||||||
*Alias
|
*Alias
|
||||||
Options *CreateInstanceOptions `json:"options,omitempty"`
|
Options *CreateInstanceOptions `json:"options,omitempty"`
|
||||||
|
DockerEnabled bool `json:"docker_enabled,omitempty"`
|
||||||
}{
|
}{
|
||||||
Alias: (*Alias)(i),
|
Alias: (*Alias)(i),
|
||||||
Options: i.options,
|
Options: i.options,
|
||||||
|
DockerEnabled: dockerEnabled,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import { Badge } from "@/components/ui/badge";
|
||||||
import { BackendType, type BackendTypeValue } from "@/types/instance";
|
import { BackendType, type BackendTypeValue } from "@/types/instance";
|
||||||
import { Server } from "lucide-react";
|
import { Server, Package } from "lucide-react";
|
||||||
|
|
||||||
interface BackendBadgeProps {
|
interface BackendBadgeProps {
|
||||||
backend?: BackendTypeValue;
|
backend?: BackendTypeValue;
|
||||||
|
docker?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const BackendBadge: React.FC<BackendBadgeProps> = ({ backend }) => {
|
const BackendBadge: React.FC<BackendBadgeProps> = ({ backend, docker }) => {
|
||||||
if (!backend) {
|
if (!backend) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -39,13 +40,25 @@ const BackendBadge: React.FC<BackendBadgeProps> = ({ backend }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Badge
|
<div className="flex items-center gap-1">
|
||||||
variant="outline"
|
<Badge
|
||||||
className={`flex items-center gap-1.5 ${getColorClasses()}`}
|
variant="outline"
|
||||||
>
|
className={`flex items-center gap-1.5 ${getColorClasses()}`}
|
||||||
<Server className="h-3 w-3" />
|
>
|
||||||
<span className="text-xs">{getText()}</span>
|
<Server className="h-3 w-3" />
|
||||||
</Badge>
|
<span className="text-xs">{getText()}</span>
|
||||||
|
</Badge>
|
||||||
|
{docker && (
|
||||||
|
<Badge
|
||||||
|
variant="outline"
|
||||||
|
className="flex items-center gap-1.5 bg-orange-100 text-orange-800 border-orange-200 dark:bg-orange-900 dark:text-orange-200 dark:border-orange-800"
|
||||||
|
title="Docker enabled"
|
||||||
|
>
|
||||||
|
<Package className="h-3 w-3" />
|
||||||
|
<span className="text-[10px] uppercase tracking-wide">Docker</span>
|
||||||
|
</Badge>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ function InstanceCard({
|
|||||||
|
|
||||||
{/* Badges row */}
|
{/* Badges row */}
|
||||||
<div className="flex items-center gap-2 flex-wrap">
|
<div className="flex items-center gap-2 flex-wrap">
|
||||||
<BackendBadge backend={instance.options?.backend_type} />
|
<BackendBadge backend={instance.options?.backend_type} docker={instance.docker_enabled} />
|
||||||
{running && <HealthBadge health={health} />}
|
{running && <HealthBadge health={health} />}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -23,4 +23,5 @@ export interface Instance {
|
|||||||
name: string;
|
name: string;
|
||||||
status: InstanceStatus;
|
status: InstanceStatus;
|
||||||
options?: CreateInstanceOptions;
|
options?: CreateInstanceOptions;
|
||||||
|
docker_enabled?: boolean; // indicates backend is running via Docker
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user