Commit 21760c9c authored by Cristiano Urban's avatar Cristiano Urban
Browse files

Added 'OSUtils' class.

parent 8532d495
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
import os

class OSUtils(object):

    def __init__(self):
        pass

    def userInfo(self, username):
        """Parses '/etc/passwd' and get returns user, uid and gid associated to
           a username."""
        fp = open("/etc/passwd", 'r')
        for line in fp:
            info = line.split(':')
            user = info[0]
            uid = int(info[2])
            gid = int(info[3])
            if user == username:
                fp.close()
                return [ user, uid, gid ]
        fp.close()
        return False

# Test
ou = OSUtils()
info = ou.userInfo("cristiano")
print(info)
+4 −15
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import json

from amqp_server import AMQPServer
from db_connector import DbConnector
from os_utils import OSUtils
from job import Job
from job_queue import JobQueue
from config import Config
@@ -32,6 +33,7 @@ class StoreAMQPServer(AMQPServer):
        self.params = config.loadSection("transfer_node")
        self.storageStorePath = self.params["store_path"]
        self.pendingQueueWrite = JobQueue("write_pending")
        self.osUtils = OSUtils()
        self.job = None
        self.username = None
        self.path = None
@@ -49,7 +51,7 @@ class StoreAMQPServer(AMQPServer):
            self.job.setPhase("PENDING")            
            #folderPath = "/home/" + user + "/store"
            folderPath = self.storageStorePath.replace("{username}", user)
            userInfo = self.userInfo(user)
            userInfo = self.osUtils.userInfo(user)
            # Check if the user exists on the transfer node
            if not userInfo:
                response = { "responseType": "ERROR",
@@ -120,19 +122,6 @@ class StoreAMQPServer(AMQPServer):
                os.chown(os.path.join(folder, f), 0, 0)
                os.chmod(os.path.join(folder, f), 0o555)

    # parse /etc/passwd on the transfer node and get
    # username, uid and gid
    def userInfo(self, username):
        fp = open("/etc/passwd", 'r')
        for line in fp:
            info = line.split(':')
            user = info[0]
            uid = int(info[2])
            gid = int(info[3])
            if user == username:
                return [ user, uid, gid ]
        return False

    def run(self):
        print(f"Starting AMQP server of type {self.type}...")
        super(StoreAMQPServer, self).run()