feat: K8s→Kubernetes命名统一 + 工具安装bug修复 + 资源可视化编辑器
1. 工具安装bug修复 (P0 critical):
- 根因: ToolConfigHandler.InstallTool的goroutine只打了日志,
从未调用实际安装逻辑
- 修复: 注入ToolInstaller到handler, 新增ForceInstall方法绕过sync.Once
- 影响: 流水线工具配置页「安装」按钮现在能真正触发下载安装
2. K8s→Kubernetes命名统一:
- Dashboard/Prometheus/AIOpsAssistant等8个文件12处用户可见文案
- 内部变量名/文件名/API group保持不变
3. 资源可视化编辑器 (新增ResourceVisualEditor.tsx):
- ConfigMap: 键值对表格编辑器(增删改)
- Secret: 键值对编辑器(自动Base64编解码)
- Service: 端口/类型/选择器可视化配置
- Ingress: Host/Path路由规则可视化编辑
- PVC: 存储大小/访问模式/StorageClass配置
- 双模式: 可视化编辑 ↔ YAML编辑一键切换
- NamespaceResourcePage: 所有资源类型添加编辑按钮入口
This commit is contained in:
1 parent
e29dfb5868
commit
aaab923f4e
14 files changed
+748
-20
No files matched your search
@@ -45,6 +45,24 @@ func (ti *ToolInstaller) ensureOnce(name string) *sync.Once {
|
||||
return o
|
||||
}
|
||||
|
||||
// ForceInstall unconditionally installs a tool (bypasses sync.Once).
|
||||
// Used by the manual "安装" button in the tool config UI.
|
||||
// The version parameter overrides DefaultVersion if non-empty.
|
||||
func (ti *ToolInstaller) ForceInstall(toolName string, version string) error {
|
||||
var tool models.DeployTool
|
||||
if err := ti.db.Where("name = ?", toolName).First(&tool).Error; err != nil {
|
||||
return fmt.Errorf("tool %s not found in DB: %w", toolName, err)
|
||||
}
|
||||
|
||||
// Override version if specified
|
||||
if version != "" && version != tool.DefaultVersion {
|
||||
ti.db.Model(&tool).Update("default_version", version)
|
||||
tool.DefaultVersion = version
|
||||
}
|
||||
|
||||
return ti.installTool(&tool)
|
||||
}
|
||||
|
||||
// EnsureAvailable checks if a tool is available and installs it if configured for lazy loading.
|
||||
// Returns nil if the tool is ready, or an error if installation failed.
|
||||
func (ti *ToolInstaller) EnsureAvailable(toolName string) error {
|
||||
|
||||
Reference in new issue
Block a user