func (fix *SimpleToolsFixture) paths(tag string) (confPath, agentDir, toolsDir string) { confName := fmt.Sprintf("jujud-%s.conf", tag) confPath = filepath.Join(fix.initDir, confName) agentDir = agent.Dir(fix.dataDir, tag) toolsDir = tools.ToolsDir(fix.dataDir, tag) return }
func (ctx *SimpleContext) RecallUnit(unitName string) error { svc, err := ctx.findInitSystemJob(unitName) if err != nil { return errors.Trace(err) } installed, err := svc.Installed() if err != nil { return errors.Trace(err) } if !installed { return errors.Errorf("unit %q is not deployed", unitName) } if err := svc.Stop(); err != nil { return err } if err := svc.Remove(); err != nil { return err } tag := names.NewUnitTag(unitName) dataDir := ctx.agentConfig.DataDir() agentDir := agent.Dir(dataDir, tag) // Recursivley change mode to 777 on windows to avoid // Operation not permitted errors when deleting the agentDir err = recursiveChmod(agentDir, os.FileMode(0777)) if err != nil { return err } if err := os.RemoveAll(agentDir); err != nil { return err } // TODO(dfc) should take a Tag toolsDir := tools.ToolsDir(dataDir, tag.String()) return os.Remove(toolsDir) }
func (c *RunCommand) executeInUnitContext() (*exec.ExecResponse, error) { unitDir := agent.Dir(cmdutil.DataDir, c.unit) logger.Debugf("looking for unit dir %s", unitDir) // make sure the unit exists _, err := os.Stat(unitDir) if os.IsNotExist(err) { return nil, errors.Errorf("unit %q not found on this machine", c.unit.Id()) } else if err != nil { return nil, errors.Trace(err) } relationId, err := checkRelationId(c.relationId) if err != nil { return nil, errors.Trace(err) } if len(c.remoteUnitName) > 0 && relationId == -1 { return nil, errors.Errorf("remote unit: %s, provided without a relation", c.remoteUnitName) } client, err := sockets.Dial(c.socketPath()) if err != nil { return nil, errors.Trace(err) } defer client.Close() var result exec.ExecResponse args := uniter.RunCommandsArgs{ Commands: c.commands, RelationId: relationId, RemoteUnitName: c.remoteUnitName, ForceRemoteUnit: c.forceRemoteUnit, } err = client.Call(uniter.JujuRunEndpoint, args, &result) return &result, errors.Trace(err) }
func (ctx *SimpleContext) RecallUnit(unitName string) error { svc := ctx.findUpstartJob(unitName) if svc == nil || !svc.Installed() { return fmt.Errorf("unit %q is not deployed", unitName) } if err := svc.StopAndRemove(); err != nil { return err } tag := names.NewUnitTag(unitName).String() dataDir := ctx.agentConfig.DataDir() agentDir := agent.Dir(dataDir, tag) if err := os.RemoveAll(agentDir); err != nil { return err } toolsDir := tools.ToolsDir(dataDir, tag) return os.Remove(toolsDir) }
func (fix *SimpleToolsFixture) paths(tag names.Tag) (agentDir, toolsDir string) { agentDir = agent.Dir(fix.dataDir, tag) toolsDir = tools.ToolsDir(fix.dataDir, tag.String()) return }