func (s *SyslogConfigSuite) TestForwardConfigWrite(c *C) { syslogConfigRenderer := syslog.NewForwardConfig("some-machine", []string{"server"}) syslogConfigRenderer.ConfigDir = s.configDir syslogConfigRenderer.ConfigFileName = "rsyslog.conf" s.assertRsyslogConfigPath(c, syslogConfigRenderer) err := syslogConfigRenderer.Write() c.Assert(err, IsNil) syslogConfData, err := ioutil.ReadFile(syslogConfigRenderer.ConfigFilePath()) c.Assert(err, IsNil) c.Assert(string(syslogConfData), Equals, expectedForwardSyslogConf) }
func (cfg *MachineConfig) addLogging(c *cloudinit.Config) error { var configRenderer syslog.SyslogConfigRenderer if cfg.StateServer { configRenderer = syslog.NewAccumulateConfig( names.MachineTag(cfg.MachineId)) } else { configRenderer = syslog.NewForwardConfig( names.MachineTag(cfg.MachineId), cfg.stateHostAddrs()) } content, err := configRenderer.Render() if err != nil { return err } c.AddFile("/etc/rsyslog.d/25-juju.conf", string(content), 0600) c.AddRunCmd("restart rsyslog") return nil }
func (cfg *MachineConfig) addLogging(c *cloudinit.Config) error { var configRenderer syslog.SyslogConfigRenderer if cfg.StateServer { configRenderer = syslog.NewAccumulateConfig( state.MachineTag(cfg.MachineId)) } else { configRenderer = syslog.NewForwardConfig( state.MachineTag(cfg.MachineId), cfg.stateHostAddrs()) } content, err := configRenderer.Render() if err != nil { return err } addScripts(c, fmt.Sprintf("cat > /etc/rsyslog.d/25-juju.conf << 'EOF'\n%sEOF\n", string(content)), ) c.AddRunCmd("restart rsyslog") return nil }
func (s *SyslogConfigSuite) TestForwardConfigRender(c *C) { syslogConfigRenderer := syslog.NewForwardConfig("some-machine", []string{"server"}) s.assertRsyslogConfigContents(c, syslogConfigRenderer, expectedForwardSyslogConf) }
func (ctx *SimpleContext) DeployUnit(unitName, initialPassword string) (err error) { // Check sanity. svc := ctx.upstartService(unitName) if svc.Installed() { return fmt.Errorf("unit %q is already deployed", unitName) } // Link the current tools for use by the new agent. tag := state.UnitTag(unitName) _, err = agent.ChangeAgentTools(ctx.dataDir, tag, version.Current) toolsDir := agent.ToolsDir(ctx.dataDir, tag) defer removeOnErr(&err, toolsDir) // Retrieve addresses from state. stateAddrs, err := ctx.addresser.Addresses() if err != nil { return err } apiAddrs, err := ctx.addresser.APIAddresses() if err != nil { return err } stateInfo := state.Info{ Addrs: stateAddrs, Tag: tag, CACert: ctx.caCert, } apiInfo := api.Info{ Addrs: apiAddrs, Tag: tag, CACert: ctx.caCert, } // Prepare the agent's configuration data. conf := &agent.Conf{ DataDir: ctx.dataDir, OldPassword: initialPassword, StateInfo: &stateInfo, APIInfo: &apiInfo, } if err := conf.Write(); err != nil { return err } defer removeOnErr(&err, conf.Dir()) // Install an upstart job that runs the unit agent. logPath := path.Join(ctx.logDir, tag+".log") syslogConfigRenderer := syslog.NewForwardConfig(tag, stateAddrs) syslogConfigRenderer.ConfigDir = ctx.syslogConfigDir syslogConfigRenderer.ConfigFileName = fmt.Sprintf("26-juju-%s.conf", tag) if err := syslogConfigRenderer.Write(); err != nil { return err } ctx.syslogConfigPath = syslogConfigRenderer.ConfigFilePath() if err := syslog.Restart(); err != nil { logger.Warningf("installer: cannot restart syslog daemon: %v", err) } defer removeOnErr(&err, ctx.syslogConfigPath) cmd := strings.Join([]string{ path.Join(toolsDir, "jujud"), "unit", "--data-dir", conf.DataDir, "--unit-name", unitName, "--debug", // TODO: propagate debug state sensibly }, " ") uconf := &upstart.Conf{ Service: *svc, Desc: "juju unit agent for " + unitName, Cmd: cmd, Out: logPath, // Propagate the provider type enviroment variable. Env: map[string]string{ "JUJU_PROVIDER_TYPE": os.Getenv("JUJU_PROVIDER_TYPE"), }, } return uconf.Install() }