예제 #1
0
 def get_clusters_list(self):
     """Returns the list of clusters in configuration file. If any problem
        is encountered, HPCStatsConfigurationException is raised.
     """
     try:
         cluster_list_str = self.get("clusters", "clusters")
     except ConfigParser.NoSectionError:
         raise HPCStatsConfigurationException(
             "section clusters is not present in configuration file")
     except ConfigParser.NoOptionError:
         raise HPCStatsConfigurationException(
             "option clusters is not present in configuration file")
     return cluster_list_str.split(",")
예제 #2
0
 def get(self, section, option, option_type=str):
     """Try to get option value in section of configuration. Raise
        HPCStatsConfigurationException if not found.
     """
     try:
         if option_type is bool:
             return super(HPCStatsConf, self).getboolean(section, option)
         if option_type is int:
             return super(HPCStatsConf, self).getint(section, option)
         else:
             return super(HPCStatsConf, self).get(section, option)
     except ConfigParser.NoSectionError:
         raise HPCStatsConfigurationException( \
                 "section %s not found" % (section))
     except ConfigParser.NoOptionError:
         raise HPCStatsConfigurationException( \
                 "option %s not found in section %s" % (option, section))
예제 #3
0
    def check_cluster(self):
        """Check for presence of cluster in configuration file. If any problem
           is encountered, HPCStatsConfigurationException is raised.
        """

        clusters = self.get_clusters_list()
        if self.cluster not in clusters:
            raise HPCStatsConfigurationException(
                    "cluster %s is not present in configuration file" \
                      % self.cluster)
예제 #4
0
    def read(self):
        """Check if configuration file exists and then read it. Raises
           HPCStatsConfigurationException if configuration file does not exist.
        """

        if not os.path.exists(self.filename):
            raise HPCStatsConfigurationException("file %s does not exist" %
                                                 (self.filename))

        super(HPCStatsConf, self).read(self.filename)
예제 #5
0
    def factory(app, db, config, cluster):
        """This method returns the appropriate EventImporter object depending
           on what is specified in configuration. In case of configuration
           error, HPCStatsConfigurationException is raised.
        """

        implem = config.get(cluster.name, 'events')

        if implem == "slurm":
            return EventImporterSlurm(app, db, config, cluster)
        else:
            raise HPCStatsConfigurationException( \
                    "EventImporter %s is not implemented" \
                      % (implem))
    def factory(app, db, config, cluster_name):
        """This method returns the appropriate ArchitectureImporter object
           depending on what is specified in configuration. In case of
           configuration error, HPCStatsConfigurationException is raised.
        """

        implem = config.get(cluster_name, 'architecture')

        if implem == "archfile":
            return ArchitectureImporterArchfile(app, db, config, cluster_name)
        else:
            raise HPCStatsConfigurationException( \
                    "ArchitectureImporter %s is not implemented" \
                      % (implem))
예제 #7
0
    def factory(app, db, config, cluster):
        """This method returns the appropriate UserImporter object depending on
           what is specified in configuration. In case of configuration error,
           HPCStatsConfigurationException is raised.
        """
        implem = config.get(cluster.name, 'users')

        if implem == 'ldap':
            return UserImporterLdap(app, db, config, cluster)
        if implem == 'ldap+slurm':
            return UserImporterLdapSlurm(app, db, config, cluster)
        else:
            raise HPCStatsConfigurationException( \
                    "UserImporter %s is not implemented" \
                      % (implem))
예제 #8
0
    def factory(app, db, config, cluster):
        """This method returns the appropriate FSQuotaImporter object
           depending on what is specified in the configuration. In case of a
           configuration error, an HPCStatsConfigurationException is raised.
        """

        implem = config.get(cluster.name, 'fsquota')

        if implem == 'dummy':
            return FSQuotaImporterDummy(app, db, config, cluster)
        elif implem == "ssh":
            return FSQuotaImporterSSH(app, db, config, cluster)
        else:
            raise HPCStatsConfigurationException( \
                    "FSQuotaImporter %s is not implemented" \
                      % (implem))
    def factory(app, db, config):
        """This method returns the appropriate BusinessCodeImporter object
           depending on what is specified in configuration. In case of
           configuration error, HPCStatsConfigurationException is raised.
        """

        implem = config.get_default('globals', 'business', 'dummy')

        if implem == 'dummy':
            return BusinessCodeImporterDummy(app, db, config)
        elif implem == 'slurm':
            return BusinessCodeImporterSlurm(app, db, config)
        elif implem == 'csv':
            return BusinessCodeImporterCSV(app, db, config)
        else:
            raise HPCStatsConfigurationException( \
                    "BusinessCodeImporter %s is not implemented" \
                      % (implem))