def check_filesystem_permissions(self): import grp grname = self.globalconf.root.jurt_group logger.debug("checking if the user is a member of the %s group" % (grname)) try: group = grp.getgrnam(grname) except KeyError: raise SetupError, ("there is no system group '%s', please check " "your jurt installation (and see jurt-setup)" % (grname)) uname, uid = su.my_username() if uname not in group.gr_mem: raise PermissionError, ("your user %s should be member of the " "%s group in order to jurt work. Did you run (as root) " "jurt-setup -u %s ?" % (uname, grname, uname)) if group.gr_gid not in os.getgroups(): raise PermissionError, ("your user is NOT effectively running as a " "member of the %s group, please restart your session " "before running jurt" % (grname)) sticky = [self.targetconf.roots_path, self.targetconf.spool_dir, self.targetconf.logs_dir, self.targetconf.failure_dir, self.targetconf.success_dir] for path in sticky: logger.debug("checking write permission for %s" % (path)) if not os.access(path, os.W_OK): raise PermissionError, ("%s has no write permission for " "you, please check your jurt installation" % (path))
def _latest_link_name(self, interactive): username, _ = my_username() if interactive: suffix = self.latestsuffix_interactive else: suffix = self.latestsuffix_build name = username + suffix return name
def build_user_info(self): if self.interactive: return my_username() else: if self.useruid == "any-available": uid = self._find_available_uid() else: uid = self.useruid return self.builduser, uid
def check_permissions(self, interactive=True): if not self.targets: raise Error, "no targets setup, you must have at least "\ "one setup in configuration for testing" try: for targetname in self.targets: if interactive: yield "testing target %s.." % (targetname) self.targets[targetname].check_permissions(interactive) if interactive: yield "OK" except su.SudoNotSetup: raise Error, ("the sudo helper for jurt is not setup, " "please run as root: jurt-setup -u %s" % (su.my_username()[0]))
def _latest_link_name(self): username, _ = my_username() name = username + "-latest" return name
def build_id(self): import time name, _ = my_username() id = time.strftime(self.idtimefmt) + "-" + name return id
def build_user_info(self): if self.interactive: return my_username() else: return self.builduser, self.useruid