|
@@ -19,6 +19,35 @@ import (
|
|
"imuslab.com/arozos/mod/utils"
|
|
"imuslab.com/arozos/mod/utils"
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+func RAIDServiceInit() {
|
|
|
|
+ /*
|
|
|
|
+ RAID Management
|
|
|
|
+
|
|
|
|
+ Handle physical disk RAID for more NAS OS like experience
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ if *allow_hardware_management {
|
|
|
|
+ rm, err := raid.NewRaidManager(raid.Options{})
|
|
|
|
+ if err == nil {
|
|
|
|
+ raidManager = rm
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ //Unable to start RAID manager. Skip it.
|
|
|
|
+ systemWideLogger.PrintAndLog("RAID", "Unable to start RAID manager", err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /* Flush mdadm RAID */
|
|
|
|
+ if raidManager != nil {
|
|
|
|
+ if !*skip_mdadm_reload {
|
|
|
|
+ err := raidManager.FlushReload()
|
|
|
|
+ if err != nil {
|
|
|
|
+ systemWideLogger.PrintAndLog("RAID", "mdadm reload failed: "+err.Error(), err)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
func DiskServiceInit() {
|
|
func DiskServiceInit() {
|
|
//Register Disk Utilities under System Setting
|
|
//Register Disk Utilities under System Setting
|
|
//Disk info are only viewable by administrator
|
|
//Disk info are only viewable by administrator
|
|
@@ -110,38 +139,30 @@ func DiskServiceInit() {
|
|
|
|
|
|
authRouter.HandleFunc("/system/disk/smart/getSMART", smartListener.GetSMART)
|
|
authRouter.HandleFunc("/system/disk/smart/getSMART", smartListener.GetSMART)
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- /*
|
|
|
|
- RAID Management
|
|
|
|
-
|
|
|
|
- Handle physical disk RAID for more NAS OS like experience
|
|
|
|
- */
|
|
|
|
- if *allow_hardware_management {
|
|
|
|
- //Register endpoints and settings for this host
|
|
|
|
- registerSetting(settingModule{
|
|
|
|
- Name: "RAID",
|
|
|
|
- Desc: "Providing basic mdadm features",
|
|
|
|
- IconPath: "SystemAO/disk/raid/img/small_icon.png",
|
|
|
|
- Group: "Disk",
|
|
|
|
- StartDir: "SystemAO/disk/raid/index.html",
|
|
|
|
- RequireAdmin: true,
|
|
|
|
- })
|
|
|
|
-
|
|
|
|
- rm, err := raid.NewRaidManager(raid.Options{})
|
|
|
|
- if err == nil {
|
|
|
|
- raidManager = rm
|
|
|
|
|
|
+ /*
|
|
|
|
+ RAID Manager endpoints
|
|
|
|
+ */
|
|
|
|
+ if raidManager != nil {
|
|
|
|
+ //Register endpoints and settings for this host
|
|
|
|
+ registerSetting(settingModule{
|
|
|
|
+ Name: "RAID",
|
|
|
|
+ Desc: "Providing basic mdadm features",
|
|
|
|
+ IconPath: "SystemAO/disk/raid/img/small_icon.png",
|
|
|
|
+ Group: "Disk",
|
|
|
|
+ StartDir: "SystemAO/disk/raid/index.html",
|
|
|
|
+ RequireAdmin: true,
|
|
|
|
+ })
|
|
|
|
|
|
- } else {
|
|
|
|
- //Unable to start RAID manager. Skip it.
|
|
|
|
- systemWideLogger.PrintAndLog("RAID", "Unable to start RAID manager", err)
|
|
|
|
- }
|
|
|
|
|
|
+ /* RAID storage pool function */
|
|
|
|
+ adminRouter.HandleFunc("/system/disk/raid/list", raidManager.HandleListRaidDevices)
|
|
|
|
+ adminRouter.HandleFunc("/system/disk/raid/new", raidManager.HandleCreateRAIDDevice)
|
|
|
|
+ adminRouter.HandleFunc("/system/disk/raid/remove", raidManager.HandleRemoveRaideDevice)
|
|
|
|
+ adminRouter.HandleFunc("/system/disk/raid/format", raidManager.HandleFormatRaidDevice)
|
|
|
|
|
|
- if raidManager != nil {
|
|
|
|
- authRouter.HandleFunc("/system/disk/raid/list", raidManager.HandleListRaidDevices)
|
|
|
|
- authRouter.HandleFunc("/system/disk/raid/remove", raidManager.HandleRemoveRaideDevice)
|
|
|
|
- authRouter.HandleFunc("/system/disk/raid/assemble", raidManager.HandleRaidDevicesAssemble)
|
|
|
|
- authRouter.HandleFunc("/system/disk/raid/new", raidManager.HandleCreateRAIDDevice)
|
|
|
|
|
|
+ /* Advance functions*/
|
|
|
|
+ adminRouter.HandleFunc("/system/disk/raid/assemble", raidManager.HandleRaidDevicesAssemble)
|
|
|
|
+ adminRouter.HandleFunc("/system/disk/raid/reload", raidManager.HandleMdadmFlushReload)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|