Exemplo n.º 1
0
    def q_add (self, *args, **kwargs):
        '''Add a reservation to tracking.
        Side Efffects:
            -Add a queue to be tracked
            -If no cqm associated queue, create a reservation queue
            -set policies for new queue
            -emit numerous creation messages

        '''

        qm = ComponentProxy("queue-manager")
        try:
            queues = [spec['name'] for spec in qm.get_queues([{'name':"*"}])]
        except ComponentLookupError:
            logger.error("unable to contact queue manager when adding reservation")
            raise

        try:
            specs = args[0]
            for spec in specs:
                if "res_id" not in spec or spec['res_id'] == '*':
                    spec['res_id'] = bgsched_id_gen.get()
            reservations = Cobalt.Data.DataDict.q_add(self, *args, **kwargs)

        except KeyError, err:
            raise ReservationError("Error: a reservation named %s already exists" % err)
Exemplo n.º 2
0
    def q_add(self, *args, **kwargs):
        '''Add a reservation to tracking.
        Side Efffects:
            -Add a queue to be tracked
            -If no cqm associated queue, create a reservation queue
            -set policies for new queue
            -emit numerous creation messages

        '''

        qm = ComponentProxy("queue-manager")
        try:
            queues = [spec['name'] for spec in qm.get_queues([{'name': "*"}])]
        except ComponentLookupError:
            logger.error(
                "unable to contact queue manager when adding reservation")
            raise

        try:
            specs = args[0]
            for spec in specs:
                if "res_id" not in spec or spec['res_id'] == '*':
                    spec['res_id'] = bgsched_id_gen.get()
            reservations = Cobalt.Data.DataDict.q_add(self, *args, **kwargs)

        except KeyError, err:
            raise ReservationError(
                "Error: a reservation named %s already exists" % err)
Exemplo n.º 3
0
 def q_del(self, *args, **kwargs):
     reservations = Cobalt.Data.DataDict.q_del(self, *args, **kwargs)
     qm = ComponentProxy('queue-manager')
     queues = [spec['name'] for spec in qm.get_queues([{'name': "*"}])]
     spec = [{'name': reservation.queue} for reservation in reservations \
             if reservation.createdQueue and reservation.queue in queues and \
             not self.q_get([{'queue':reservation.queue}])]
     try:
         qm.set_queues(spec, {'state': "dead"}, "bgsched")
     except Exception, e:
         logger.error("problem disabling reservation queue (%s)" % e)
Exemplo n.º 4
0
 def q_del (self, *args, **kwargs):
     reservations = Cobalt.Data.DataDict.q_del(self, *args, **kwargs)
     qm = ComponentProxy('queue-manager')
     queues = [spec['name'] for spec in qm.get_queues([{'name':"*"}])]
     spec = [{'name': reservation.queue} for reservation in reservations \
             if reservation.createdQueue and reservation.queue in queues and \
             not self.q_get([{'queue':reservation.queue}])]
     try:
         qm.set_queues(spec, {'state':"dead"}, "bgsched")
     except Exception, e:
         logger.error("problem disabling reservation queue (%s)" % e)
Exemplo n.º 5
0
 def q_add (self, *args, **kwargs):
     qm = ComponentProxy(self.COMP_QUEUE_MANAGER)
     try:
         queues = [spec['name'] for spec in qm.get_queues([{'name':"*"}])]
     except ComponentLookupError:
         logger.error("unable to contact queue manager when adding reservation")
         raise
     
     try:
         reservations = Cobalt.Data.DataDict.q_add(self, *args, **kwargs)
     except KeyError, e:
         raise ReservationError("Error: a reservation named %s already exists" % e)
Exemplo n.º 6
0
    def q_add(self, *args, **kwargs):
        qm = ComponentProxy(self.COMP_QUEUE_MANAGER)
        try:
            queues = [spec['name'] for spec in qm.get_queues([{'name': "*"}])]
        except ComponentLookupError:
            logger.error(
                "unable to contact queue manager when adding reservation")
            raise

        try:
            reservations = Cobalt.Data.DataDict.q_add(self, *args, **kwargs)
        except KeyError, e:
            raise ReservationError(
                "Error: a reservation named %s already exists" % e)
Exemplo n.º 7
0
    def q_add (self, *args, **kwargs):
        qm = ComponentProxy("queue-manager")
        try:
            queues = [spec['name'] for spec in qm.get_queues([{'name':"*"}])]
        except ComponentLookupError:
            logger.error("unable to contact queue manager when adding reservation")
            raise
        
        try:
            specs = args[0]
            for spec in specs:
                if "res_id" not in spec or spec['res_id'] == '*':
                    spec['res_id'] = bgsched_id_gen.get()
            reservations = Cobalt.Data.DataDict.q_add(self, *args, **kwargs)

        except KeyError, e:
            raise ReservationError("Error: a reservation named %s already exists" % e)
Exemplo n.º 8
0
    def q_del(self, *args, **kwargs):
        '''Delete a reservation from tracking.
        Side Effects: Removes a queue from tracking.
                      Logs that the reservation has terminated.
                      Emits a terminated database record
                      Attempts to mark the queue dead in the queue-manager.

        '''
        reservations = Cobalt.Data.DataDict.q_del(self, *args, **kwargs)
        qm = ComponentProxy('queue-manager')
        queues = [spec['name'] for spec in qm.get_queues([{'name': "*"}])]
        spec = [{'name': reservation.queue} for reservation in reservations \
                if reservation.createdQueue and reservation.queue in queues \
                and not self.q_get([{'queue':reservation.queue}])]
        try:
            qm.set_queues(spec, {'state': "dead"}, "bgsched")
        except Exception, err:
            logger.error("problem disabling reservation queue (%s)" % err)
Exemplo n.º 9
0
    def q_del (self, *args, **kwargs):
        '''Delete a reservation from tracking.
        Side Effects: Removes a queue from tracking.
                      Logs that the reservation has terminated.
                      Emits a terminated database record
                      Attempts to mark the queue dead in the queue-manager.
                      Marks the reservation as dying

        '''
        reservations = Cobalt.Data.DataDict.q_del(self, *args, **kwargs)
        qm = ComponentProxy('queue-manager')
        queues = [spec['name'] for spec in qm.get_queues([{'name':"*"}])]
        spec = [{'name': reservation.queue} for reservation in reservations \
                if reservation.createdQueue and reservation.queue in queues \
                and not self.q_get([{'queue':reservation.queue}])]
        try:
            qm.set_queues(spec, {'state':"dead"}, "bgsched")
        except Exception, err:
            logger.error("problem disabling reservation queue (%s)" % err)
Exemplo n.º 10
0
    def q_add(self, *args, **kwargs):
        qm = ComponentProxy("queue-manager")
        try:
            queues = [spec['name'] for spec in qm.get_queues([{'name': "*"}])]
        except ComponentLookupError:
            logger.error(
                "unable to contact queue manager when adding reservation")
            raise

        try:
            specs = args[0]
            for spec in specs:
                if "res_id" not in spec or spec['res_id'] == '*':
                    spec['res_id'] = bgsched_id_gen.get()
            reservations = Cobalt.Data.DataDict.q_add(self, *args, **kwargs)

        except KeyError, e:
            raise ReservationError(
                "Error: a reservation named %s already exists" % e)
Exemplo n.º 11
0
        custom_header = os.environ['QSTAT_HEADER'].split(':')
    if 'CQSTAT_HEADER_FULL' in os.environ.keys():
        custom_header_full = os.environ['CQSTAT_HEADER_FULL'].split(':')
    elif 'QSTAT_HEADER_FULL' in os.environ.keys():
        custom_header_full = os.environ['QSTAT_HEADER_FULL'].split(':')
    if opts['header']:
        custom_header = opts['header'].split(':')

    try:
        cqm = ComponentProxy("queue-manager", defer=False)
    except ComponentLookupError:
        print >> sys.stderr, "Failed to connect to queue manager"
        sys.exit(2)
    
    try:
        queues = cqm.get_queues([{'name':"*", 'state':"*"}])
    except:
        print >> sys.stderr, "Failed to get queue list from queue manager"
        sys.exit(2)

    level = 30
    if opts['debug']:
        level = 10

    if opts['version']:
        print "qstat %s" % __revision__
        sys.exit(0)
        
    Cobalt.Logging.setup_logging('qstat', to_syslog=False, level=level)

    jobid = None
Exemplo n.º 12
0
        args = (opts.savestate,)
        parts = component_call(system.save, args)

    elif opts.list_blocks:
        func = system.get_partitions
        if sys_type == 'bgq':
            args = ([{'name':'*', 'size':'*', 'state':'*', 'scheduled':'*', 'functional':'*',
                'queue':'*', 'relatives':'*', 'passthrough_blocks':'*', 'node_geometry':'*'}], )
        if sys_type == 'bgp':
            args = ([{'name':'*', 'size':'*', 'state':'*', 'scheduled':'*', 'functional':'*',
                'queue':'*', 'parents':'*', 'children':'*'}], )
        parts = component_call(system.get_partitions, args)
    elif opts.queue:
        try:
            cqm = ComponentProxy("queue-manager", defer=False)
            existing_queues = [q.get('name') for q in cqm.get_queues([ \
                {'tag':'queue', 'name':'*'}])]
        except:
            print "Error getting queues from queue_manager"
            raise SystemExit, 1
        error_messages = []
        for q in opts.queue.split(':'):
            if not q in existing_queues:
                error_messages.append('\'' + q + '\' is not an existing queue')
        if error_messages:
            for e in error_messages:
                print e
            raise SystemExit, 1
        args = ([{'tag':'partition', 'name':partname} for partname in parts],
                {'queue':opts.queue}, whoami)
        parts = component_call(system.set_partitions, args)
    elif opts.dump:
Exemplo n.º 13
0
     func = system.get_partitions
     args = ([{
         'tag': 'partition',
         'name': '*',
         'size': '*',
         'state': '*',
         'scheduled': '*',
         'functional': '*',
         'queue': '*',
         'parents': '*',
         'children': '*'
     }], )
 elif '--queue' in [opt for (opt, arg) in opts]:
     try:
         cqm = ComponentProxy("queue-manager", defer=False)
         existing_queues = [q.get('name') for q in cqm.get_queues([ \
             {'tag':'queue', 'name':'*'}])]
     except:
         print "Error getting queues from queue_manager"
         raise SystemExit, 1
     queue = [arg for (opt, arg) in opts if opt == '--queue'][0]
     error_messages = []
     for q in queue.split(':'):
         if not q in existing_queues:
             error_messages.append('\'' + q + '\' is not an existing queue')
     if error_messages:
         for e in error_messages:
             print e
         raise SystemExit, 1
     func = system.set_partitions
     args = ([{
         'tag': 'partition',
Exemplo n.º 14
0
            'mintime': '*',
            'maxtime': '*',
            'maxrunning': '*',
            'maxqueued': '*',
            'maxusernodes': '*',
            'maxnodehours': '*',
            'totalnodes': '*',
            'state': '*',
            'priority': '*'
        } for qname in names]
        header = [
            'Name', 'State', 'Users', 'Groups', 'MinTime', 'MaxTime',
            'MaxRunning', 'MaxQueued', 'MaxUserNodes', 'MaxNodeHours',
            'TotalNodes', 'Priority'
        ]
        response = cqm.get_queues(query)
    else:
        if opts['full'] and opts['long']:
            header = long_header
        elif opts['full'] and custom_header_full:
            header = custom_header_full
        elif opts['full'] and not opts['long']:
            header = full_header
        elif custom_header:
            header = custom_header
        else:
            header = default_header

        # build query from long_header (all fields) and fetch response
        try:
            query = []
Exemplo n.º 15
0
Arquivo: cqstat.py Projeto: ido/cobalt
    user_name = '*'
    if opts['user']:
        user_name = opts['user']

    if opts['q']:  # querying for queues
        query = [{'name' :qname, 'users':'*', 'groups':'*',
                  'mintime':'*', 'maxtime':'*', 'maxrunning':'*',
                  'maxqueued':'*', 'maxusernodes':'*',
                  'maxnodehours': '*', 
                  'totalnodes':'*', 'state':'*', 'priority':'*'} for qname in names]
        header = ['Name', 'State', 'Users', 'Groups', 'MinTime', 'MaxTime',
                  'MaxRunning', 'MaxQueued', 'MaxUserNodes',
                  'MaxNodeHours',
                  'TotalNodes', 'Priority']
        response = cqm.get_queues(query)
    else:
        if opts['full'] and opts['long']:
            header = long_header
        elif opts['full'] and custom_header_full:
            header = custom_header_full
        elif opts['full'] and not opts['long']:
            header = full_header
        elif custom_header:
            header = custom_header
        else:
            header = default_header

        # build query from long_header (all fields) and fetch response
        try:
            query = []
Exemplo n.º 16
0
        custom_header = os.environ['QSTAT_HEADER'].split(':')
    if 'CQSTAT_HEADER_FULL' in os.environ.keys():
        custom_header_full = os.environ['CQSTAT_HEADER_FULL'].split(':')
    elif 'QSTAT_HEADER_FULL' in os.environ.keys():
        custom_header_full = os.environ['QSTAT_HEADER_FULL'].split(':')
    if opts['header']:
        custom_header = opts['header'].split(':')

    try:
        cqm = ComponentProxy("queue-manager", defer=False)
    except ComponentLookupError:
        print >> sys.stderr, "Failed to connect to queue manager"
        sys.exit(2)

    try:
        queues = cqm.get_queues([{'name': "*", 'state': "*"}])
    except:
        print >> sys.stderr, "Failed to get queue list from queue manager"
        sys.exit(2)

    level = 30
    if opts['debug']:
        level = 10

    if opts['version']:
        print "qstat %s" % __revision__
        sys.exit(0)

    Cobalt.Logging.setup_logging('qstat', to_syslog=False, level=level)

    jobid = None
Exemplo n.º 17
0
Arquivo: qstat.py Projeto: ido/cobalt
        custom_header = os.environ["QSTAT_HEADER"].split(":")
    if "CQSTAT_HEADER_FULL" in os.environ.keys():
        custom_header_full = os.environ["CQSTAT_HEADER_FULL"].split(":")
    elif "QSTAT_HEADER_FULL" in os.environ.keys():
        custom_header_full = os.environ["QSTAT_HEADER_FULL"].split(":")
    if opts["header"]:
        custom_header = opts["header"].split(":")

    try:
        cqm = ComponentProxy("queue-manager", defer=False)
    except ComponentLookupError:
        print >> sys.stderr, "Failed to connect to queue manager"
        sys.exit(2)

    try:
        queues = cqm.get_queues([{"name": "*", "state": "*"}])
    except:
        print >> sys.stderr, "Failed to get queue list from queue manager"
        sys.exit(2)

    level = 30
    if opts["debug"]:
        level = 10

    if opts["version"]:
        print "qstat %s" % __revision__
        sys.exit(0)

    Cobalt.Logging.setup_logging("qstat", to_syslog=False, level=level)

    jobid = None