From fe540cd234b19476e5d7ce9ec928b84a7c894bfd Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Sun, 12 Oct 2014 09:01:27 +0100 Subject: [PATCH] improve debugging for the icecast controller --- node/icecast.go | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/node/icecast.go b/node/icecast.go index 54090a4e..fe9770f8 100644 --- a/node/icecast.go +++ b/node/icecast.go @@ -3,6 +3,7 @@ package node import ( "encoding/xml" "errors" + "fmt" "io" "log" "net/http" @@ -16,7 +17,9 @@ import ( ) var ( - statusPageUrl = "http://localhost:8000/status-autoradio.xsl" + statusPage = "/status-autoradio.xsl" + icecastConfigFile = "/etc/icecast2/icecast.xml" + icecastReloadCmd = "/usr/sbin/service icecast2 reload || /usr/sbin/service icecast2 start" icecastOk = instrumentation.NewGauge("icecast.ok") ) @@ -48,31 +51,26 @@ type IcecastStatus struct { } type IcecastController struct { - PublicIp string - ConfigFile string - InitScript string - config *icecastConfig - status *IcecastStatus - stop chan bool + config *icecastConfig + status *IcecastStatus + stop chan bool } func NewIcecastController(publicIp string, stop chan bool) *IcecastController { return &IcecastController{ - PublicIp: publicIp, - ConfigFile: "/etc/icecast2/icecast.xml", - InitScript: "/etc/init.d/icecast2", - config: newIcecastConfig(publicIp), - status: &IcecastStatus{}, - stop: make(chan bool, 1), + config: newIcecastConfig(publicIp), + status: &IcecastStatus{}, + stop: make(chan bool, 1), } } +// Reload the icecast daemon. Redirects output to our standard error +// for debugging purposes. func (ic *IcecastController) reload() error { - err := exec.Command(ic.InitScript, "reload").Run() - if err != nil { - err = exec.Command(ic.InitScript, "start").Run() - } - return err + cmd := exec.Command("/bin/sh", "-c", icecastReloadCmd) + cmd.Stdout = os.Stderr + cmd.Stderr = os.Stderr + return cmd.Run() } // Update reloads the Icecast daemon with a new configuration. @@ -81,7 +79,7 @@ func (ic *IcecastController) Update(conf *ClusterConfig, isMaster bool, masterAd return errors.New("unknown system state") } - tmpf := ic.ConfigFile + ".tmp" + tmpf := icecastConfigFile + ".tmp" defer os.Remove(tmpf) ic.config.Update(conf, isMaster, masterAddr) @@ -89,7 +87,7 @@ func (ic *IcecastController) Update(conf *ClusterConfig, isMaster bool, masterAd return err } - if err := os.Rename(tmpf, ic.ConfigFile); err != nil { + if err := os.Rename(tmpf, icecastConfigFile); err != nil { return err } @@ -121,7 +119,7 @@ func (ic *IcecastController) statusUpdater() { } func (ic *IcecastController) fetchStatus() (*IcecastStatus, error) { - resp, err := http.Get(statusPageUrl) + resp, err := http.Get(fmt.Sprintf("http://localhost:%d%s", autoradio.IcecastPort, statusPage)) if err != nil { return nil, err } -- GitLab