diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index f38434d..810e8d1 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,9 +4,9 @@
-
-
+
+
@@ -356,7 +356,7 @@
-
+
@@ -414,7 +414,15 @@
1724727682739
-
+
+
+ 1724736926763
+
+
+
+ 1724736926763
+
+
@@ -438,6 +446,7 @@
-
+
+
\ No newline at end of file
diff --git a/management-panel/app/Filament/Widgets/UpdateConfigWidget.php b/management-panel/app/Filament/Widgets/UpdateConfigWidget.php
new file mode 100644
index 0000000..91ed3f9
--- /dev/null
+++ b/management-panel/app/Filament/Widgets/UpdateConfigWidget.php
@@ -0,0 +1,75 @@
+deleteByPrefix("datasource");
+
+ $settings = DB::table('settings')
+ ->where('group', 'datasource')
+ ->get(); // 获取 group 为 datasource 的所有记录
+
+ foreach ($settings as $setting) {
+ $key = '/' . $setting->group . '/' . $setting->name;
+ $etcd->put($key, $setting->payload);
+ }
+
+ $metrics = DB::table('metrics')->get(); // 获取所有 metrics 数据
+
+ foreach ($metrics as $index => $metric) {
+ $baseKey = '/metrics/' . $index;
+
+ // 存储 name 到 etcd
+ $etcd->put($baseKey . '/name', $metric->name);
+
+ // 存储 identifier_type 到 etcd
+ $etcd->put($baseKey . '/identifier_type', $metric->identifier_type);
+
+ // 根据 identifier_type 生成 nodeid 并存储到 etcd
+ switch ($metric->identifier_type) {
+ case 1: // Numeric
+ $nodeId = 'ns=' . $metric->namespace_index . ';i=' . $metric->numeric_id;
+ break;
+ case 2: // String
+ $nodeId = 'ns=' . $metric->namespace_index . ';s=' . $metric->string_id;
+ break;
+ case 3: // GUID
+ $nodeId = 'ns=' . $metric->namespace_index . ';g=' . $metric->guid_id;
+ break;
+ default:
+ $nodeId = ''; // 若 identifier_type 不符合预期,则 nodeId 为空
+ break;
+ }
+ $etcd->put($baseKey . '/nodeid', $nodeId);
+
+ // 存储 help 到 etcd
+ $etcd->put($baseKey . '/help', $metric->help ?? '');
+ }
+
+ Notification::make()
+ ->title('配置更新成功!')
+ ->success() // 设置为成功类型
+ ->send(); // 发送通知
+
+ } catch (\Exception $e) {
+ // 失败通知
+ Notification::make()
+ ->title('配置更新失败!')
+ ->danger() // 设置为错误类型
+ ->body($e->getMessage()) // 显示异常信息
+ ->send(); // 发送通知
+ }
+ }
+}
diff --git a/management-panel/app/Providers/Filament/AdminPanelProvider.php b/management-panel/app/Providers/Filament/AdminPanelProvider.php
index 45da90f..34937c4 100644
--- a/management-panel/app/Providers/Filament/AdminPanelProvider.php
+++ b/management-panel/app/Providers/Filament/AdminPanelProvider.php
@@ -2,6 +2,7 @@
namespace App\Providers\Filament;
+use App\Filament\Widgets\UpdateConfigWidget;
use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent;
@@ -40,6 +41,7 @@ class AdminPanelProvider extends PanelProvider
->widgets([
Widgets\AccountWidget::class,
Widgets\FilamentInfoWidget::class,
+ UpdateConfigWidget::class,
])
->middleware([
EncryptCookies::class,
diff --git a/management-panel/resources/views/filament/widgets/update-config-widget.blade.php b/management-panel/resources/views/filament/widgets/update-config-widget.blade.php
new file mode 100644
index 0000000..c98c1e0
--- /dev/null
+++ b/management-panel/resources/views/filament/widgets/update-config-widget.blade.php
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+ 导出配置到ETCD
+
+
+
+