def get_partitions(self, locations):
        """
        Work-around to get the cqadm to run a single job on this system
        PRE:  locations is a list of dict of strings of possible node names
        POST:  if good, return locations
                if not good, raise exception and list bad nodes
        """
        logstr = "System:get_partition: "
        hiccup = HeckleConnector()
        heckle_node_set = set(hiccup.list_all_nodes())
        locs = locations[0]['name']
        LOGGER.debug( logstr + "raw is are: %s" % locations )
        LOGGER.debug( logstr + "vals are: %s" % locs )
        if type(locs) == ListType:
            locset = set(locs)
            badlocations = locset.difference(heckle_node_set)
            if badlocations:
                raise Exception(
        logstr + "Bad Locations: %s " % list(badlocations) )
        elif type(locs) == StringType:
            if locs not in locations:
                raise Exception( logstr + "Bad Locations: %s" % locs)
        else:
            raise Exception( logstr + 
"location needs to be string or list of strings, you provided %s : %s" \
% ( type(locs), locs))
        return locations
示例#2
0
    def get_partitions(self, locations):
        """
        Work-around to get the cqadm to run a single job on this system
        PRE:  locations is a list of dict of strings of possible node names
        POST:  if good, return locations
                if not good, raise exception and list bad nodes
        """
        logstr = "System:get_partition: "
        hiccup = HeckleConnector()
        heckle_node_set = set(hiccup.list_all_nodes())
        locs = locations[0]['name']
        LOGGER.debug(logstr + "raw is are: %s" % locations)
        LOGGER.debug(logstr + "vals are: %s" % locs)
        if type(locs) == ListType:
            locset = set(locs)
            badlocations = locset.difference(heckle_node_set)
            if badlocations:
                raise Exception(logstr +
                                "Bad Locations: %s " % list(badlocations))
        elif type(locs) == StringType:
            if locs not in locations:
                raise Exception(logstr + "Bad Locations: %s" % locs)
        else:
            raise Exception( logstr +
                             "location needs to be string or list of strings, you provided %s : %s" \
% ( type(locs), locs))
        return locations
 def verify_locations(self, location_list):
     """
     Makes sure a location list is valid
     location list is a list of fully qualified strings of node names
     ex:  nodename.mcs.anl.gov
     """
     LOGGER.debug("System:validate Job: Verify Locations")
     hiccup = HeckleConnector()
     heckle_set = set(hiccup.list_all_nodes())
     location_set = set(location_list)
     if heckle_set >= location_set:
         return location_list
     else:
         not_valid_list = list( location_set.difference( heckle_set ) )
         raise Exception(
 "System:VerifyLocations: Invalid location names: %s" % not_valid_list)
示例#4
0
 def verify_locations(self, location_list):
     """
     Makes sure a location list is valid
     location list is a list of fully qualified strings of node names
     ex:  nodename.mcs.anl.gov
     """
     LOGGER.debug("System:validate Job: Verify Locations")
     hiccup = HeckleConnector()
     heckle_set = set(hiccup.list_all_nodes())
     location_set = set(location_list)
     if heckle_set >= location_set:
         return location_list
     else:
         not_valid_list = list(location_set.difference(heckle_set))
         raise Exception(
             "System:VerifyLocations: Invalid location names: %s" %
             not_valid_list)