Example #1
0
 def __init__( self ):
   cmd.Cmd.__init__( self )
   self.connected = False
   self.masterURL = "unset"
   self.writeEnabled = False
   self.modifiedData = False
   self.rpcClient = None
   self.do_connect()
   if self.connected:
     self.modificator = Modificator ( self.rpcClient )
   else:
     self.modificator = Modificator()
   self.identSpace = 20
   self.backupFilename = "dataChanges"
   self._initSignals()
   #User friendly hack
   self.do_exit = self.do_quit
   # store history
   histfilename = os.path.basename(sys.argv[0])
   historyFile = os.path.expanduser( "~/.dirac/%s.history" % histfilename[0:-3])
   if not os.path.exists( os.path.dirname(historyFile) ):
     os.makedirs( os.path.dirname(historyFile) )
   if os.path.isfile( historyFile ):
     readline.read_history_file( historyFile )
   readline.set_history_length(1000)
   atexit.register( readline.write_history_file, historyFile )
Example #2
0
 def initialize(self):
     if self.__initialized['OK']:
         return self.__initialized
     if not gConfig.useServerCertificate():
         res = self.__getProxyID()
     else:
         res = self.__getCertificateID()
     if not res:
         self.__initialized = S_ERROR("Cannot locate client credentials")
         return self.__initialized
     retVal = gConfig.getOption("/DIRAC/Configuration/MasterServer")
     if not retVal['OK']:
         self.__initialized = S_ERROR(
             "Master server is not known. Is everything initialized?")
         return self.__initialized
     self.__rpcClient = RPCClient(
         gConfig.getValue("/DIRAC/Configuration/MasterServer", ""))
     self.__csMod = Modificator(
         self.__rpcClient,
         "%s - %s - %s" % (self.__userGroup, self.__userDN,
                           Time.dateTime().strftime("%Y-%m-%d %H:%M:%S")))
     retVal = self.downloadCSData()
     if not retVal['OK']:
         self.__initialized = S_ERROR(
             "Can not download the remote cfg. Is everything initialized?")
         return self.__initialized
     self.__initialized = S_OK()
     return self.__initialized
Example #3
0
    def __getRemoteConfiguration(self, funcName):
        rpcClient = RPCClient(
            gConfig.getValue("/DIRAC/Configuration/MasterServer",
                             "Configuration/Server"))
        modCfg = Modificator(rpcClient)
        retVal = modCfg.loadFromRemote()

        if not retVal['OK']:
            return {
                "success": 0,
                "op": "getSubnodes",
                "message": "The configuration cannot be read from the remote !"
            }

        self.__configData['cfgData'] = modCfg
        self.__configData['strCfgData'] = str(modCfg)

        version = str(modCfg.getCFG()["DIRAC"]["Configuration"]["Version"])
        configName = str(modCfg.getCFG()["DIRAC"]["Configuration"]["Name"])
        return {
            "success": 1,
            "op": funcName,
            "version": version,
            "name": configName
        }
    def do_connect(self, line):
        """connect
    Connect to the CS
    Usage: connect <URL> (Connect to the CS at the specified URL)
           connect       (Connect to the default CS URL of your config)
    """
        if line == "":
            self.serverURL = gConfigurationData.getMasterServer()
            self.serverName = gConfigurationData.getName()
        else:
            self.serverURL = self.serverName = line

        if self.serverURL == None:
            print "Unable to connect to the default server. Maybe you don't have a proxy ?"
            return self.do_disconnect("")

        print "Trying to connect to " + self.serverURL + "...",

        self.modificator = Modificator(RPCClient(self.serverURL))
        rv = self.modificator.loadFromRemote()
        rv2 = self.modificator.loadCredentials()

        if rv['OK'] == False or rv2['OK'] == False:
            print "failed: ",
            if rv['OK'] == False: print rv['Message']
            else: print rv2['Message']
            self.connected = False
            self.update_prompt()
Example #5
0
    def initialize(self):
        """API initialization

        :return: S_OK()/S_ERROR()
        """
        if self.__initialized["OK"]:
            return self.__initialized
        res = self.__getCertificateID() if gConfig.useServerCertificate(
        ) else self.__getProxyID()
        if not res["OK"]:
            gLogger.error(res["Message"])
            self.__initialized = S_ERROR("Cannot locate client credentials")
            return self.__initialized
        retVal = gConfig.getOption("/DIRAC/Configuration/MasterServer")
        if not retVal["OK"]:
            self.__initialized = S_ERROR(
                "Master server is not known. Is everything initialized?")
            return self.__initialized
        self.__rpcClient = ConfigurationClient(
            url=gConfig.getValue("/DIRAC/Configuration/MasterServer", ""))
        self.__csMod = Modificator(
            self.__rpcClient,
            "%s - %s - %s" %
            (self.__userGroup, self.__userDN,
             datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")),
        )
        retVal = self.downloadCSData()
        if not retVal["OK"]:
            self.__initialized = S_ERROR(
                "Can not download the remote cfg. Is everything initialized?")
            return self.__initialized
        self.__initialized = S_OK()
        return self.__initialized
Example #6
0
    def do_connect(self, line):
        """connect
        Connect to the CS
        Usage: connect <URL> (Connect to the CS at the specified URL)
               connect       (Connect to the default CS URL of your config)
        """
        if line == "":
            self.serverURL = gConfigurationData.getMasterServer()
            self.serverName = gConfigurationData.getName()
        else:
            self.serverURL = self.serverName = line

        if self.serverURL is None:
            print("Unable to connect to the default server. Maybe you don't have a proxy ?")
            return self.do_disconnect("")

        print("Trying to connect to " + self.serverURL + "...", end=" ")

        self.modificator = Modificator(ConfigurationClient(url=self.serverURL))
        rv = self.modificator.loadFromRemote()
        rv2 = self.modificator.loadCredentials()

        if rv["OK"] == False or rv2["OK"] == False:
            print("failed: ", end=" ")
            if rv["OK"] is False:
                print(rv["Message"])
            else:
                print(rv2["Message"])
            self.connected = False
            self.update_prompt()
        else:
            self.connected = True
            self.update_prompt()
            print("done.")
Example #7
0
 def __init__(self):
     cmd.Cmd.__init__(self)
     self.connected = False
     self.masterURL = "unset"
     self.writeEnabled = False
     self.modifiedData = False
     self.rpcClient = None
     self.do_connect()
     if self.connected:
         self.modificator = Modificator(self.rpcClient)
     else:
         self.modificator = Modificator()
     self.identSpace = 20
     self.backupFilename = "dataChanges"
     self._initSignals()
     #User friendly hack
     self.do_exit = self.do_quit
 def __getModificator(self):
     rpcClient = getRPCClient(
         gConfig.getValue("/DIRAC/Configuration/MasterServer",
                          "Configuration/Server"))
     commiter = "%s@%s - %s" % (
         credentials.getUsername(), credentials.getSelectedGroup(),
         Time.dateTime().strftime("%Y-%m-%d %H:%M:%S"))
     return Modificator(rpcClient, commiter)
Example #9
0
 def __init__(self):
     CLI.__init__(self)
     self.connected = False
     self.masterURL = "unset"
     self.writeEnabled = False
     self.modifiedData = False
     self.rpcClient = None
     self.do_connect()
     if self.connected:
         self.modificator = Modificator(self.rpcClient)
     else:
         self.modificator = Modificator()
     self.indentSpace = 20
     self.backupFilename = "dataChanges"
     # store history
     histfilename = os.path.basename(sys.argv[0])
     historyFile = os.path.expanduser("~/.dirac/%s.history" % histfilename[0:-3])
     mkDir(os.path.dirname(historyFile))
     if os.path.isfile(historyFile):
         readline.read_history_file(historyFile)
     readline.set_history_length(1000)
     atexit.register(readline.write_history_file, historyFile)
 def __getRemoteConfiguration(self):
     rpcClient = getRPCClient(
         gConfig.getValue("/DIRAC/Configuration/MasterServer",
                          "Configuration/Server"))
     modCfg = Modificator(rpcClient)
     retVal = modCfg.loadFromRemote()
     if retVal['OK']:
         session['cfgData'] = str(modCfg)
         session['csName'] = "%s Configuration" % (
             modCfg.getValue("/DIRAC/VirtualOrganization"))
         session.save()
         c.cfgData = modCfg.cfgData
         c.csName = session['csName']
     return retVal
Example #11
0
 def initialize(self):
     if not gConfig.useServerCertificate():
         res = self.__getProxyID()
     else:
         res = self.__getCertificateID()
     if not res:
         return False
     retVal = gConfig.getOption("/DIRAC/Configuration/MasterServer")
     if not retVal['OK']:
         gLogger.warn(
             "Master server is not known. Is everything initialized?")
         return False
     self.__rpcClient = RPCClient(
         gConfig.getValue("/DIRAC/Configuration/MasterServer", ""))
     self.__csMod = Modificator(
         self.__rpcClient, "%s - %s" % (self.__userGroup, self.__userDN))
     retVal = self.downloadCSData()
     if not retVal['OK']:
         gLogger.error(
             "Can not download the remote cfg. Is everything initialized?")
         return False
     return True
Example #12
0
                                   diffList=processedData["diff"])
            }))

    def __showDiff(self, params):
        if not self.__authorizeAction():
            raise WErr(500, "You are not authorized to get diff's!! Bad boy!")
        try:
            fromDate = str(params['fromVersion'])
            toDate = str(params['toVersion'])
        except Exception, e:
            raise WErr(500, "Can't decode params: %s" % e)

        rpcClient = RPCClient(
            gConfig.getValue("/DIRAC/Configuration/MasterServer",
                             "Configuration/Server"))
        modCfg = Modificator(rpcClient)
        diffGen = modCfg.getVersionDiff(fromDate, toDate)
        processedData = self.__generateHTMLDiff(diffGen)
        return self.write_message(
            json.dumps({
                "success":
                1,
                "op":
                "showDiff",
                "lines":
                processedData["lines"],
                "totalLines":
                processedData["totalLines"],
                "html":
                self.render_string("ConfigurationManager/diffConfig.tpl",
                                   titles=("From version %s" % fromDate,