11package actions
22
33import (
4- "../proxy"
54 "fmt"
5+
6+ "../proxy"
67)
78
89// Removable defines functions that must be implemented by any struct in charge of removing services from the proxy.
@@ -33,11 +34,14 @@ var NewRemove = func(serviceName, aclName, configsPath, templatesPath string, in
3334// Execute initiates the removal of a service
3435func (m * Remove ) Execute (args []string ) error {
3536 logPrintf ("Removing %s configuration" , m .ServiceName )
36- if err := m .removeFiles ( m . TemplatesPath , m . ServiceName , m . AclName ); err != nil {
37- logPrintf ( err . Error ())
37+ didRemove , err := m .removeConfigsAndService ()
38+ if err != nil {
3839 return err
3940 }
40- proxy .Instance .RemoveService (m .ServiceName )
41+ if ! didRemove {
42+ logPrintf ("%s was not configured, no reload required" , m .ServiceName )
43+ return nil
44+ }
4145 reload := reload {}
4246 if err := reload .Execute (true ); err != nil {
4347 logPrintf (err .Error ())
@@ -46,6 +50,21 @@ func (m *Remove) Execute(args []string) error {
4650 return nil
4751}
4852
53+ func (m * Remove ) removeConfigsAndService () (bool , error ) {
54+ configProxyMu .Lock ()
55+ defer configProxyMu .Unlock ()
56+ didRemove := proxy .Instance .RemoveService (m .ServiceName )
57+ if ! didRemove {
58+ return didRemove , nil
59+ }
60+
61+ if err := m .removeFiles (m .TemplatesPath , m .ServiceName , m .AclName ); err != nil {
62+ logPrintf (err .Error ())
63+ return false , err
64+ }
65+ return didRemove , nil
66+ }
67+
4968func (m * Remove ) removeFiles (templatesPath , serviceName , aclName string ) error {
5069 logPrintf ("Removing the %s configuration files" , serviceName )
5170 if len (aclName ) == 0 {
@@ -55,8 +74,6 @@ func (m *Remove) removeFiles(templatesPath, serviceName, aclName string) error {
5574 fmt .Sprintf ("%s/%s-fe.cfg" , templatesPath , aclName ),
5675 fmt .Sprintf ("%s/%s-be.cfg" , templatesPath , aclName ),
5776 }
58- // mu.Lock()
59- // defer mu.Unlock()
6077 for _ , path := range paths {
6178 osRemove (path )
6279 }
0 commit comments