From 4ed47daabcb8e52c0e39e8347196e56519ba13ab Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 17 Sep 2019 11:50:19 +0300 Subject: [PATCH] Updated service reload --- servmanager/servmanager.go | 169 ++++++++++--------------------------- 1 file changed, 43 insertions(+), 126 deletions(-) diff --git a/servmanager/servmanager.go b/servmanager/servmanager.go index ab254ef55..a208662e8 100644 --- a/servmanager/servmanager.go +++ b/servmanager/servmanager.go @@ -372,178 +372,95 @@ func (srvMngr *ServiceManager) handleReload() { srvMngr.engineShutdown <- ext return case <-srvMngr.cfg.GetReloadChan(config.ATTRIBUTE_JSN): - attrS, has := srvMngr.subsystems[utils.AttributeS] + srv, has := srvMngr.subsystems[utils.AttributeS] if !has { utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.AttributeS)) srvMngr.engineShutdown <- true return // stop if we encounter an error } - if srvMngr.cfg.AttributeSCfg().Enabled { - if attrS.IsRunning() { - if err = attrS.Reload(srvMngr); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to reload <%s>", utils.ServiceManager, utils.AttributeS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } else { - if err = attrS.Start(srvMngr, true); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.AttributeS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } - } else if attrS.IsRunning() { - if err = attrS.Shutdown(); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to stop service <%s>", utils.ServiceManager, utils.AttributeS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } + if err = srvMngr.reloadService(srv, srvMngr.cfg.AttributeSCfg().Enabled); err != nil { + return } case <-srvMngr.cfg.GetReloadChan(config.ChargerSCfgJson): - chrS, has := srvMngr.subsystems[utils.ChargerS] + srv, has := srvMngr.subsystems[utils.ChargerS] if !has { utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.ChargerS)) srvMngr.engineShutdown <- true return // stop if we encounter an error } - if srvMngr.cfg.ChargerSCfg().Enabled { - if chrS.IsRunning() { - if err = chrS.Reload(srvMngr); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to reload <%s>", utils.ServiceManager, utils.ChargerS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } else { - if err = chrS.Start(srvMngr, true); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.ChargerS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } - } else if chrS.IsRunning() { - if err = chrS.Shutdown(); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to stop service <%s>", utils.ServiceManager, utils.ChargerS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } + if err = srvMngr.reloadService(srv, srvMngr.cfg.ChargerSCfg().Enabled); err != nil { + return } case <-srvMngr.cfg.GetReloadChan(config.THRESHOLDS_JSON): - tS, has := srvMngr.subsystems[utils.ThresholdS] + srv, has := srvMngr.subsystems[utils.ThresholdS] if !has { utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.ThresholdS)) srvMngr.engineShutdown <- true return // stop if we encounter an error } - if srvMngr.cfg.ThresholdSCfg().Enabled { - if tS.IsRunning() { - if err = tS.Reload(srvMngr); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to reload <%s>", utils.ServiceManager, utils.ThresholdS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } else { - if err = tS.Start(srvMngr, true); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.ThresholdS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } - } else if tS.IsRunning() { - if err = tS.Shutdown(); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to stop service <%s>", utils.ServiceManager, utils.ThresholdS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } + if err = srvMngr.reloadService(srv, srvMngr.cfg.ThresholdSCfg().Enabled); err != nil { + return } case <-srvMngr.cfg.GetReloadChan(config.STATS_JSON): - tS, has := srvMngr.subsystems[utils.StatS] + srv, has := srvMngr.subsystems[utils.StatS] if !has { utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.StatS)) srvMngr.engineShutdown <- true return // stop if we encounter an error } - if srvMngr.cfg.StatSCfg().Enabled { - if tS.IsRunning() { - if err = tS.Reload(srvMngr); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to reload <%s>", utils.ServiceManager, utils.StatS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } else { - if err = tS.Start(srvMngr, true); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.StatS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } - } else if tS.IsRunning() { - if err = tS.Shutdown(); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to stop service <%s>", utils.ServiceManager, utils.StatS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } + if err = srvMngr.reloadService(srv, srvMngr.cfg.StatSCfg().Enabled); err != nil { + return } case <-srvMngr.cfg.GetReloadChan(config.RESOURCES_JSON): - tS, has := srvMngr.subsystems[utils.ResourceS] + srv, has := srvMngr.subsystems[utils.ResourceS] if !has { utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.ResourceS)) srvMngr.engineShutdown <- true return // stop if we encounter an error } - if srvMngr.cfg.ResourceSCfg().Enabled { - if tS.IsRunning() { - if err = tS.Reload(srvMngr); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to reload <%s>", utils.ServiceManager, utils.ResourceS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } else { - if err = tS.Start(srvMngr, true); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.ResourceS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } - } else if tS.IsRunning() { - if err = tS.Shutdown(); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to stop service <%s>", utils.ServiceManager, utils.ResourceS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } + if err = srvMngr.reloadService(srv, srvMngr.cfg.ResourceSCfg().Enabled); err != nil { + return } case <-srvMngr.cfg.GetReloadChan(config.SupplierSJson): - tS, has := srvMngr.subsystems[utils.SupplierS] + srv, has := srvMngr.subsystems[utils.SupplierS] if !has { utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.SupplierS)) srvMngr.engineShutdown <- true return // stop if we encounter an error } - if srvMngr.cfg.SupplierSCfg().Enabled { - if tS.IsRunning() { - if err = tS.Reload(srvMngr); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to reload <%s>", utils.ServiceManager, utils.SupplierS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } else { - if err = tS.Start(srvMngr, true); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, utils.SupplierS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } - } - } else if tS.IsRunning() { - if err = tS.Shutdown(); err != nil { - utils.Logger.Err(fmt.Sprintf("<%s> Failed to stop service <%s>", utils.ServiceManager, utils.SupplierS)) - srvMngr.engineShutdown <- true - return // stop if we encounter an error - } + if err = srvMngr.reloadService(srv, srvMngr.cfg.SupplierSCfg().Enabled); err != nil { + return } } // handle RPC server } } +func (srvMngr *ServiceManager) reloadService(srv Service, shouldRun bool) (err error) { + if shouldRun { + if srv.IsRunning() { + if err = srv.Reload(srvMngr); err != nil { + utils.Logger.Err(fmt.Sprintf("<%s> Failed to reload <%s>", utils.ServiceManager, srv.ServiceName())) + srvMngr.engineShutdown <- true + return // stop if we encounter an error + } + } else { + if err = srv.Start(srvMngr, true); err != nil { + utils.Logger.Err(fmt.Sprintf("<%s> Failed to start <%s>", utils.ServiceManager, srv.ServiceName())) + srvMngr.engineShutdown <- true + return // stop if we encounter an error + } + } + } else if srv.IsRunning() { + if err = srv.Shutdown(); err != nil { + utils.Logger.Err(fmt.Sprintf("<%s> Failed to stop service <%s>", utils.ServiceManager, srv.ServiceName())) + srvMngr.engineShutdown <- true + return // stop if we encounter an error + } + } + return +} + // ServiceProvider should implement this to provide information for service type ServiceProvider interface { // GetDM returns the DataManager