def createMountBrokerRoot(userName): try: getpwnam(userName) except KeyError as e: raise ge.GlusterGeoRepUserNotFoundException(err=[str(e)]) if not os.path.exists(MOUNT_BROKER_ROOT): try: os.makedirs(MOUNT_BROKER_ROOT, 0o711) except OSError as e: raise ge.GlusterMountBrokerRootCreateFailedException(err=[str(e)]) return
def updateGeoRepKeys(userName, geoRepPubKeys): try: userInfo = getpwnam(userName) homeDir = userInfo[5] uid = userInfo[2] gid = userInfo[3] except KeyError as e: raise ge.GlusterGeoRepUserNotFoundException(err=[str(e)]) sshDir = homeDir + "/.ssh" authKeysFile = sshDir + "/authorized_keys" if not os.path.exists(sshDir): try: os.makedirs(sshDir, 0o700) os.chown(sshDir, uid, gid) if selinux.is_selinux_enabled(): selinux.restorecon(sshDir) except OSError as e: raise ge.GlusterGeoRepPublicKeyWriteFailedException(err=[str(e)]) newKeys = [" ".join(l.split()[:-1]) for l in geoRepPubKeys] newKeyDict = dict(zip(newKeys, geoRepPubKeys)) try: with open(authKeysFile) as f: existingKeyLines = f.readlines() except IOError as e: if e.errno == errno.ENOENT: existingKeyLines = [] else: raise ge.GlusterGeoRepPublicKeyWriteFailedException(err=[str(e)]) try: existingKeys = [" ".join(l.split()[:-1]) for l in existingKeyLines] existingKeyDict = dict(zip(existingKeys, existingKeyLines)) outLines = existingKeyLines outKeys = set(newKeyDict).difference(set(existingKeyDict)) outLines.extend([newKeyDict[k] for k in outKeys if newKeyDict[k]]) safeWrite(authKeysFile, ''.join(outLines)) os.chmod(authKeysFile, 0o600) os.chown(authKeysFile, uid, gid) if selinux.is_selinux_enabled(): selinux.restorecon(authKeysFile) except (IOError, OSError) as e: raise ge.GlusterGeoRepPublicKeyWriteFailedException(err=[str(e)])