Exemple #1
0
    def build_user_home(self, username):
        from jurtlib.template import template_expand

        env = {"username": username}
        value = template_expand(self.builderhome, env)
        path = os.path.abspath(value)
        return path
Exemple #2
0
 def cmd_interactiveprepare(self):
     from jurtlib.template import template_expand
     if not self.args:
         raise CliError, "username is mandatory in args"
     user = self.args[0]
     allowedcmds = self.target.packagemanager.allowed_pm_commands()
     cmdsline = ",".join(allowedcmds)
     rawline = self.config.root.sudo_pm_allow_format
     env = {"user": user, "commands": cmdsline}
     sudoline = template_expand(rawline, env)
     sudoerspath = os.path.abspath(self.opts.root+ "/" +
             self.config.root.sudoers)
     f = open(sudoerspath, "a")
     f.write(sudoline + "\n")
     f.close()
Exemple #3
0
 def cmd_interactiveshell(self):
     from jurtlib.template import template_expand
     if not self.args:
         raise CliError, "username is mandatory in args"
     if not self.target.rootmanager.allows_interactive_shell():
         raise CliError, "interactive configuration not allowed "\
                 "for this target"
     args = self.target.rootmanager.sudo_interactive_shell_command()
     args.extend(("-u", self.args[0]))
     rawcmd = self.target.rootmanager.interactive_shell_command()
     env = {"target": self.target.name, "root": self.opts.root}
     cmdline = template_expand(rawcmd, env)
     args.extend(shlex.split(cmdline))
     if not self.opts.dry_run:
         try:
             self._exec(args, error=False, exit=False, interactive=True)
         except CommandError, e:
             if e.returncode == 127:
                 raise
 def setup_repositories(self, root, repos, logstore, spool=None):
     if spool:
         rootspool = root.make_spool_reachable(spool)
     outputlogger = logstore.get_output_handler("addmedia")
     try:
         try:
             if spool is not None and spool.package_count():
                 vars = {"path": rootspool.in_root_path()}
                 args = [template_expand(arg, vars)
                         for arg in self.spoolchannel]
                 root.su().run_package_manager("smart.addchannel", args,
                         outputlogger=outputlogger)
         finally:
             outputlogger.close()
             if spool:
                 rootspool.destroy()
     except su.CommandError, e:
         raise PackageManagerError, ("failed to setup repositories, "
                 "see the logs at %s" % (outputlogger.location))
 def update_repository_metadata(self, path):
     vars = {"path": path}
     args = [template_expand(arg, vars) for arg in self.spoolupdatecmd[:]]
     cmd.run(args)