This commit is contained in:
@@ -517,6 +517,14 @@ func (a *App) handleCreateSMBShare(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Apply configuration to Samba service
|
||||
shares := a.smbStore.List()
|
||||
if err := a.smbService.ApplyConfiguration(shares); err != nil {
|
||||
log.Printf("apply SMB configuration error: %v", err)
|
||||
// Don't fail the request, but log the error
|
||||
// In production, you might want to queue this for retry
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusCreated, share)
|
||||
}
|
||||
|
||||
@@ -571,6 +579,13 @@ func (a *App) handleUpdateSMBShare(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
share, _ := a.smbStore.Get(id)
|
||||
|
||||
// Apply configuration to Samba service
|
||||
shares := a.smbStore.List()
|
||||
if err := a.smbService.ApplyConfiguration(shares); err != nil {
|
||||
log.Printf("apply SMB configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusOK, share)
|
||||
}
|
||||
|
||||
@@ -659,6 +674,12 @@ func (a *App) handleCreateNFSExport(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Apply configuration to NFS service
|
||||
exports := a.nfsStore.List()
|
||||
if err := a.nfsService.ApplyConfiguration(exports); err != nil {
|
||||
log.Printf("apply NFS configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusCreated, export)
|
||||
}
|
||||
|
||||
@@ -712,6 +733,13 @@ func (a *App) handleUpdateNFSExport(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
export, _ := a.nfsStore.Get(id)
|
||||
|
||||
// Apply configuration to NFS service
|
||||
exports := a.nfsStore.List()
|
||||
if err := a.nfsService.ApplyConfiguration(exports); err != nil {
|
||||
log.Printf("apply NFS configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusOK, export)
|
||||
}
|
||||
|
||||
@@ -732,6 +760,12 @@ func (a *App) handleDeleteNFSExport(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Apply configuration to NFS service
|
||||
exports := a.nfsStore.List()
|
||||
if err := a.nfsService.ApplyConfiguration(exports); err != nil {
|
||||
log.Printf("apply NFS configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusOK, map[string]string{"message": "export deleted", "id": id})
|
||||
}
|
||||
|
||||
@@ -774,6 +808,12 @@ func (a *App) handleCreateISCSITarget(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Apply configuration to iSCSI service
|
||||
targets := a.iscsiStore.List()
|
||||
if err := a.iscsiService.ApplyConfiguration(targets); err != nil {
|
||||
log.Printf("apply iSCSI configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusCreated, target)
|
||||
}
|
||||
|
||||
@@ -825,6 +865,13 @@ func (a *App) handleUpdateISCSITarget(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
target, _ := a.iscsiStore.Get(id)
|
||||
|
||||
// Apply configuration to iSCSI service
|
||||
targets := a.iscsiStore.List()
|
||||
if err := a.iscsiService.ApplyConfiguration(targets); err != nil {
|
||||
log.Printf("apply iSCSI configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusOK, target)
|
||||
}
|
||||
|
||||
@@ -845,6 +892,12 @@ func (a *App) handleDeleteISCSITarget(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Apply configuration to iSCSI service
|
||||
targets := a.iscsiStore.List()
|
||||
if err := a.iscsiService.ApplyConfiguration(targets); err != nil {
|
||||
log.Printf("apply iSCSI configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusOK, map[string]string{"message": "target deleted", "id": id})
|
||||
}
|
||||
|
||||
@@ -910,6 +963,12 @@ func (a *App) handleAddLUN(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Apply configuration to iSCSI service
|
||||
targets := a.iscsiStore.List()
|
||||
if err := a.iscsiService.ApplyConfiguration(targets); err != nil {
|
||||
log.Printf("apply iSCSI configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusCreated, lun)
|
||||
}
|
||||
|
||||
@@ -946,6 +1005,12 @@ func (a *App) handleRemoveLUN(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Apply configuration to iSCSI service
|
||||
targets := a.iscsiStore.List()
|
||||
if err := a.iscsiService.ApplyConfiguration(targets); err != nil {
|
||||
log.Printf("apply iSCSI configuration error: %v", err)
|
||||
}
|
||||
|
||||
writeJSON(w, http.StatusOK, map[string]string{"message": "LUN removed", "target_id": id, "lun_id": strconv.Itoa(req.LUNID)})
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"gitea.avt.data-center.id/othman.suseno/atlas/internal/auth"
|
||||
"gitea.avt.data-center.id/othman.suseno/atlas/internal/db"
|
||||
"gitea.avt.data-center.id/othman.suseno/atlas/internal/job"
|
||||
"gitea.avt.data-center.id/othman.suseno/atlas/internal/services"
|
||||
"gitea.avt.data-center.id/othman.suseno/atlas/internal/snapshot"
|
||||
"gitea.avt.data-center.id/othman.suseno/atlas/internal/storage"
|
||||
"gitea.avt.data-center.id/othman.suseno/atlas/internal/zfs"
|
||||
@@ -39,6 +40,9 @@ type App struct {
|
||||
nfsStore *storage.NFSStore
|
||||
iscsiStore *storage.ISCSIStore
|
||||
database *db.DB // Optional database connection
|
||||
smbService *services.SMBService
|
||||
nfsService *services.NFSService
|
||||
iscsiService *services.ISCSIService
|
||||
}
|
||||
|
||||
func New(cfg Config) (*App, error) {
|
||||
@@ -82,6 +86,11 @@ func New(cfg Config) (*App, error) {
|
||||
nfsStore := storage.NewNFSStore()
|
||||
iscsiStore := storage.NewISCSIStore()
|
||||
|
||||
// Initialize service daemon integrations
|
||||
smbService := services.NewSMBService()
|
||||
nfsService := services.NewNFSService()
|
||||
iscsiService := services.NewISCSIService()
|
||||
|
||||
a := &App{
|
||||
cfg: cfg,
|
||||
tmpl: tmpl,
|
||||
@@ -97,6 +106,9 @@ func New(cfg Config) (*App, error) {
|
||||
nfsStore: nfsStore,
|
||||
iscsiStore: iscsiStore,
|
||||
database: database,
|
||||
smbService: smbService,
|
||||
nfsService: nfsService,
|
||||
iscsiService: iscsiService,
|
||||
}
|
||||
|
||||
// Start snapshot scheduler (runs every 15 minutes)
|
||||
|
||||
Reference in New Issue
Block a user