Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(309)

Side by Side Diff: worker/rsyslog/worker.go

Issue 93410043: Extract errors package to github.com/juju/errors
Patch Set: Created 9 years, 10 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 Canonical Ltd. 1 // Copyright 2014 Canonical Ltd.
2 // Licensed under the AGPLv3, see LICENCE file for details. 2 // Licensed under the AGPLv3, see LICENCE file for details.
3 3
4 package rsyslog 4 package rsyslog
5 5
6 import ( 6 import (
7 "fmt" 7 "fmt"
8 "os" 8 "os"
9 "os/user" 9 "os/user"
10 "strconv" 10 "strconv"
11 "time" 11 "time"
12 12
13 » "github.com/errgo/errgo" 13 » "github.com/juju/errors"
14 "github.com/juju/loggo" 14 "github.com/juju/loggo"
15 15
16 "launchpad.net/juju-core/agent" 16 "launchpad.net/juju-core/agent"
17 "launchpad.net/juju-core/cert" 17 "launchpad.net/juju-core/cert"
18 "launchpad.net/juju-core/names" 18 "launchpad.net/juju-core/names"
19 apirsyslog "launchpad.net/juju-core/state/api/rsyslog" 19 apirsyslog "launchpad.net/juju-core/state/api/rsyslog"
20 "launchpad.net/juju-core/state/api/watcher" 20 "launchpad.net/juju-core/state/api/watcher"
21 "launchpad.net/juju-core/utils" 21 "launchpad.net/juju-core/utils"
22 "launchpad.net/juju-core/utils/syslog" 22 "launchpad.net/juju-core/utils/syslog"
23 "launchpad.net/juju-core/worker" 23 "launchpad.net/juju-core/worker"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 return &RsyslogConfigHandler{ 115 return &RsyslogConfigHandler{
116 st: st, 116 st: st,
117 mode: mode, 117 mode: mode,
118 syslogConfig: syslogConfig, 118 syslogConfig: syslogConfig,
119 }, nil 119 }, nil
120 } 120 }
121 121
122 func (h *RsyslogConfigHandler) SetUp() (watcher.NotifyWatcher, error) { 122 func (h *RsyslogConfigHandler) SetUp() (watcher.NotifyWatcher, error) {
123 if h.mode == RsyslogModeAccumulate { 123 if h.mode == RsyslogModeAccumulate {
124 if err := h.ensureCertificates(); err != nil { 124 if err := h.ensureCertificates(); err != nil {
125 » » » return nil, errgo.Annotate(err, "failed to write rsyslog certificates") 125 » » » return nil, errors.Annotate(err, "failed to write rsyslo g certificates")
126 } 126 }
127 } 127 }
128 return h.st.WatchForEnvironConfigChanges() 128 return h.st.WatchForEnvironConfigChanges()
129 } 129 }
130 130
131 var restartRsyslog = syslog.Restart 131 var restartRsyslog = syslog.Restart
132 132
133 func (h *RsyslogConfigHandler) TearDown() error { 133 func (h *RsyslogConfigHandler) TearDown() error {
134 if err := os.Remove(h.syslogConfig.ConfigFilePath()); err == nil { 134 if err := os.Remove(h.syslogConfig.ConfigFilePath()); err == nil {
135 restartRsyslog() 135 restartRsyslog()
136 } 136 }
137 return nil 137 return nil
138 } 138 }
139 139
140 func (h *RsyslogConfigHandler) Handle() error { 140 func (h *RsyslogConfigHandler) Handle() error {
141 cfg, err := h.st.EnvironConfig() 141 cfg, err := h.st.EnvironConfig()
142 if err != nil { 142 if err != nil {
143 » » return errgo.Annotate(err, "cannot get environ config") 143 » » return errors.Annotate(err, "cannot get environ config")
144 } 144 }
145 rsyslogCACert := cfg.RsyslogCACert() 145 rsyslogCACert := cfg.RsyslogCACert()
146 if rsyslogCACert == "" { 146 if rsyslogCACert == "" {
147 return nil 147 return nil
148 } 148 }
149 // If neither syslog-port nor rsyslog-ca-cert 149 // If neither syslog-port nor rsyslog-ca-cert
150 // have changed, we can drop out now. 150 // have changed, we can drop out now.
151 if cfg.SyslogPort() == h.syslogPort && rsyslogCACert == h.rsyslogCACert { 151 if cfg.SyslogPort() == h.syslogPort && rsyslogCACert == h.rsyslogCACert {
152 return nil 152 return nil
153 } 153 }
154 h.syslogConfig.Port = cfg.SyslogPort() 154 h.syslogConfig.Port = cfg.SyslogPort()
155 if h.mode == RsyslogModeForwarding { 155 if h.mode == RsyslogModeForwarding {
156 if err := writeFileAtomic(h.syslogConfig.CACertPath(), []byte(rs yslogCACert), 0644, 0, 0); err != nil { 156 if err := writeFileAtomic(h.syslogConfig.CACertPath(), []byte(rs yslogCACert), 0644, 0, 0); err != nil {
157 » » » return errgo.Annotate(err, "cannot write CA certificate" ) 157 » » » return errors.Annotate(err, "cannot write CA certificate ")
158 } 158 }
159 } 159 }
160 data, err := h.syslogConfig.Render() 160 data, err := h.syslogConfig.Render()
161 if err != nil { 161 if err != nil {
162 » » return errgo.Annotate(err, "failed to render rsyslog configurati on file") 162 » » return errors.Annotate(err, "failed to render rsyslog configurat ion file")
163 } 163 }
164 if err := writeFileAtomic(h.syslogConfig.ConfigFilePath(), []byte(data), 0644, 0, 0); err != nil { 164 if err := writeFileAtomic(h.syslogConfig.ConfigFilePath(), []byte(data), 0644, 0, 0); err != nil {
165 » » return errgo.Annotate(err, "failed to write rsyslog configuratio n file") 165 » » return errors.Annotate(err, "failed to write rsyslog configurati on file")
166 } 166 }
167 logger.Debugf("Reloading rsyslog configuration") 167 logger.Debugf("Reloading rsyslog configuration")
168 if err := restartRsyslog(); err != nil { 168 if err := restartRsyslog(); err != nil {
169 logger.Errorf("failed to reload rsyslog configuration") 169 logger.Errorf("failed to reload rsyslog configuration")
170 » » return errgo.Annotate(err, "cannot restart rsyslog") 170 » » return errors.Annotate(err, "cannot restart rsyslog")
171 } 171 }
172 // Record config values so we don't try again. 172 // Record config values so we don't try again.
173 // Do this last so we recover from intermittent 173 // Do this last so we recover from intermittent
174 // failures. 174 // failures.
175 h.syslogPort = cfg.SyslogPort() 175 h.syslogPort = cfg.SyslogPort()
176 h.rsyslogCACert = rsyslogCACert 176 h.rsyslogCACert = rsyslogCACert
177 return nil 177 return nil
178 } 178 }
179 179
180 var lookupUser = func(username string) (uid, gid int, err error) { 180 var lookupUser = func(username string) (uid, gid int, err error) {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 } 255 }
256 if uid != 0 { 256 if uid != 0 {
257 if err := f.Chown(uid, gid); err != nil { 257 if err := f.Chown(uid, gid); err != nil {
258 return err 258 return err
259 } 259 }
260 } 260 }
261 return nil 261 return nil
262 } 262 }
263 return utils.AtomicWriteFileAndChange(path, data, chmodAndChown) 263 return utils.AtomicWriteFileAndChange(path, data, chmodAndChown)
264 } 264 }
OLDNEW

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b