Class: OodReservations::Queries::TorqueMoab

Inherits:
OodReservations::Query show all
Defined in:
lib/ood_reservations/queries/torque_moab.rb

Overview

Object used for querying reservations on a batch server that uses Torque for the resource manager and Moab for the scheduler

Constant Summary collapse

VALID_SUBTYPES =

Valid reservation subtypes, other subtypes will be ignored NB: used to filter out running jobs that appear in reservation list

%i( StandingReservation )

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from OodReservations::Query

build, #initialize

Constructor Details

This class inherits a constructor from OodReservations::Query

Class Method Details

.match(cluster:, **_) ⇒ Boolean

Whether this cluster matches this Query adapter for use

Parameters:

  • cluster (OodCluster::Cluster)

    the cluster to query

Returns:

  • (Boolean)

    whether this cluster can be used by this query object



16
17
18
19
20
21
# File 'lib/ood_reservations/queries/torque_moab.rb', line 16

def self.match(cluster:, **_)
  cluster.resource_mgr_server? &&
    cluster.scheduler_server? &&
    cluster.resource_mgr_server.is_a?(OodCluster::Servers::Torque) &&
    cluster.scheduler_server.is_a?(OodCluster::Servers::Moab)
end

Instance Method Details

#reservation(id:) ⇒ Reservation

Queries the Moab scheduler for a given reservation and builds reservation object with help of Torque resource manager

Parameters:

  • id (#to_s)

    the id of the reservation

Returns:

See Also:



28
29
30
31
32
33
# File 'lib/ood_reservations/queries/torque_moab.rb', line 28

def reservation(id:)
  xml = moab(@cluster).call("mrsvctl", "-q", "#{id}")
  parse_rsv_xml @cluster, xml.xpath(rsv_xpath)
rescue Moab::Error => e
  raise Error, e.message
end

#reservationsArray<Reservation>

Queries the Moab scheduler for a list of reservations and builds reservation objects with help of Torque resource manager

Returns:

See Also:



40
41
42
43
44
45
# File 'lib/ood_reservations/queries/torque_moab.rb', line 40

def reservations
  xml = moab(@cluster).call("mrsvctl", "-q", "ALL")
  xml.xpath(rsv_xpath).map {|r_xml| parse_rsv_xml @cluster, r_xml}
rescue Moab::Error => e
  raise Error, e.message
end