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(",")
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))
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)
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)
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))
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))
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))