func (s *RsyslogSuite) TestModeForwarding(c *gc.C) { err := s.APIState.Client().EnvironmentSet(map[string]interface{}{"rsyslog-ca-cert": coretesting.CACert}) c.Assert(err, gc.IsNil) st, m := s.OpenAPIAsNewMachine(c, state.JobHostUnits) addrs := []string{"0.1.2.3", "0.2.4.6"} worker, err := rsyslog.NewRsyslogConfigWorker(st.Rsyslog(), rsyslog.RsyslogModeForwarding, m.Tag(), "", addrs) c.Assert(err, gc.IsNil) defer func() { c.Assert(worker.Wait(), gc.IsNil) }() defer worker.Kill() // We should get a ca-cert.pem with the contents introduced into state config. waitForFile(c, filepath.Join(*rsyslog.LogDir, "ca-cert.pem")) caCertPEM, err := ioutil.ReadFile(filepath.Join(*rsyslog.LogDir, "ca-cert.pem")) c.Assert(err, gc.IsNil) c.Assert(string(caCertPEM), gc.DeepEquals, coretesting.CACert) // Verify rsyslog configuration. waitForFile(c, filepath.Join(*rsyslog.RsyslogConfDir, "25-juju.conf")) rsyslogConf, err := ioutil.ReadFile(filepath.Join(*rsyslog.RsyslogConfDir, "25-juju.conf")) c.Assert(err, gc.IsNil) syslogPort := s.Conn.Environ.Config().SyslogPort() syslogConfig := syslog.NewForwardConfig(m.Tag(), *rsyslog.LogDir, syslogPort, "", addrs) syslogConfig.ConfigDir = *rsyslog.RsyslogConfDir rendered, err := syslogConfig.Render() c.Assert(err, gc.IsNil) c.Assert(string(rsyslogConf), gc.DeepEquals, string(rendered)) }
func (s *SyslogConfigSuite) TestForwardConfigRenderWithNamespace(c *gc.C) { syslogConfigRenderer := syslog.NewForwardConfig( "some-machine", agent.DefaultLogDir, 999, "namespace", []string{"server"}, ) s.assertRsyslogConfigContents( c, syslogConfigRenderer, syslogtesting.ExpectedForwardSyslogConf( c, "some-machine", agent.DefaultLogDir, "namespace", "server", 999, ), ) }
func (s *SyslogConfigSuite) TestForwardConfigWrite(c *gc.C) { syslogConfigRenderer := syslog.NewForwardConfig( "some-machine", agent.DefaultLogDir, 999, "", []string{"server"}, ) syslogConfigRenderer.ConfigDir = s.configDir syslogConfigRenderer.ConfigFileName = "rsyslog.conf" s.assertRsyslogConfigPath(c, syslogConfigRenderer) err := syslogConfigRenderer.Write() c.Assert(err, gc.IsNil) syslogConfData, err := ioutil.ReadFile(syslogConfigRenderer.ConfigFilePath()) c.Assert(err, gc.IsNil) c.Assert( string(syslogConfData), gc.Equals, syslogtesting.ExpectedForwardSyslogConf( c, "some-machine", agent.DefaultLogDir, "", "server", 999, ), ) }
func newRsyslogConfigHandler(st *apirsyslog.State, mode RsyslogMode, tag, namespace string, stateServerAddrs []string) (*RsyslogConfigHandler, error) { var syslogConfig *syslog.SyslogConfig if mode == RsyslogModeAccumulate { syslogConfig = syslog.NewAccumulateConfig( tag, logDir, 0, namespace, ) } else { syslogConfig = syslog.NewForwardConfig( tag, logDir, 0, namespace, stateServerAddrs, ) } // Historically only machine-0 includes the namespace in the log // dir/file; for backwards compatibility we continue the tradition. if tag != "machine-0" { namespace = "" } kind, err := names.TagKind(tag) if err != nil { return nil, err } if kind == names.MachineTagKind { if namespace == "" { syslogConfig.ConfigFileName = "25-juju.conf" } else { syslogConfig.ConfigFileName = fmt.Sprintf("25-juju-%s.conf", namespace) } } else { syslogConfig.ConfigFileName = fmt.Sprintf("26-juju-%s.conf", tag) } syslogConfig.ConfigDir = rsyslogConfDir syslogConfig.LogDir = logDir if namespace != "" { syslogConfig.LogDir += "-" + namespace } return &RsyslogConfigHandler{ st: st, mode: mode, syslogConfig: syslogConfig, }, nil }