def get_store(): # We'll start by setting up a Wallaby client library session against # the broker on localhost from qmf.console import Session console = Session() console.addBroker() raw_store, = console.getObjects(_class="Store") store = wallaby.Store(raw_store, console) # call this method after the store client is initialized so that # the tagging library knows how to create missing groups tagging.setup(store) return store
# See the License for the specific language governing permissions and # limitations under the License. # from qmf.console import Session from sys import exit, argv, stdin import time jobid = len(argv) > 1 and argv[1] attr_name = len(argv) > 2 and argv[2] attr_value = len(argv) > 3 and argv[3] url = len(argv) > 4 and argv[4] or "amqp://localhost:5672" try: session = Session() broker = session.addBroker(url) schedulers = session.getObjects(_class="scheduler", _package="com.redhat.grid") except Exception, e: print "unable to access broker or scheduler" print e exit(1) result = schedulers[0].SetJobAttribute(jobid, attr_name, attr_value) if result.status: print result.text session.delBroker(broker) exit(1) session.delBroker(broker)
class Qmf: """ QMF functions not yet available in the new QMF API. Remove this and replace with new API when it becomes available. """ def __init__(self, broker): self.__session = Session() self.__broker = self.__session.addBroker("amqp://localhost:%d"%broker.port()) def add_exchange(self, exchange_name, exchange_type, alt_exchange_name=None, passive=False, durable=False, arguments = None): """Add a new exchange""" amqp_session = self.__broker.getAmqpSession() if arguments == None: arguments = {} if alt_exchange_name: amqp_session.exchange_declare(exchange=exchange_name, type=exchange_type, alternate_exchange=alt_exchange_name, passive=passive, durable=durable, arguments=arguments) else: amqp_session.exchange_declare(exchange=exchange_name, type=exchange_type, passive=passive, durable=durable, arguments=arguments) def add_queue(self, queue_name, alt_exchange_name=None, passive=False, durable=False, arguments = None): """Add a new queue""" amqp_session = self.__broker.getAmqpSession() if arguments == None: arguments = {} if alt_exchange_name: amqp_session.queue_declare(queue_name, alternate_exchange=alt_exchange_name, passive=passive, durable=durable, arguments=arguments) else: amqp_session.queue_declare(queue_name, passive=passive, durable=durable, arguments=arguments) def delete_queue(self, queue_name): """Delete an existing queue""" amqp_session = self.__broker.getAmqpSession() amqp_session.queue_delete(queue_name) def _query(self, name, _class, package, alt_exchange_name=None): """Qmf query function which can optionally look for the presence of an alternate exchange name""" try: obj_list = self.__session.getObjects(_class=_class, _package=package) found = False for obj in obj_list: if obj.name == name: found = True if alt_exchange_name != None: alt_exch_list = self.__session.getObjects(_objectId=obj.altExchange) if len(alt_exch_list) == 0 or alt_exch_list[0].name != alt_exchange_name: return False break return found except Exception: return False def query_exchange(self, exchange_name, alt_exchange_name=None): """Test for the presence of an exchange, and optionally whether it has an alternate exchange set to a known value.""" return self._query(exchange_name, "exchange", "org.apache.qpid.broker", alt_exchange_name) def query_queue(self, queue_name, alt_exchange_name=None): """Test for the presence of an exchange, and optionally whether it has an alternate exchange set to a known value.""" return self._query(queue_name, "queue", "org.apache.qpid.broker", alt_exchange_name) def queue_message_count(self, queue_name): """Query the number of messages on a queue""" queue_list = self.__session.getObjects(_class="queue", _name=queue_name) if len(queue_list): return queue_list[0].msgDepth def queue_empty(self, queue_name): """Check if a queue is empty (has no messages waiting)""" return self.queue_message_count(queue_name) == 0 def get_objects(self, target_class, target_package="org.apache.qpid.broker"): return self.__session.getObjects(_class=target_class, _package=target_package) def close(self): self.__session.delBroker(self.__broker) self.__session = None
from qmf.console import Session import wallaby # create a new console object console = Session() # connect to the broker (on localhost:5672, by default) console.addBroker() # find the QMF object for the wallaby service raw_store, = console.getObjects(_class="Store") # wrap it up in a client object store = wallaby.Store(raw_store, console) # now, interact with it! node = store.addNode("barney.local.") feature = store.addFeature("Example feature") param = store.addParam("EXAMPLE_PARAM") # most "options" arguments are indeed optional feature.modifyParams("ADD", {"EXAMPLE_PARAM":"example value"}) store.getDefaultGroup().modifyFeatures("ADD", ["Example feature"]) node.getConfig() # get documentation on a method help(store.activateConfiguration)
quiet = False url = "amqp://localhost:5672" for arg in argv[1:]: if arg == '-q': quiet = True if "amqp://" in arg: url = arg if not quiet: print ad; try: session = Session() broker = session.addBroker(url) schedulers = session.getObjects(_class="scheduler", _package="com.redhat.grid") except Exception, e: print "unable to access broker or scheduler" exit(1) result = schedulers[0].SubmitJob(ad) if result.status: print "Error submitting:", result.text session.delBroker(broker) exit(1) if not quiet: print "Submitted:", result.Id print "waiting for Submission to propagate..." time.sleep(10)
# shown for this test from qmf.console import Session from sys import exit, argv url = len(argv) > 1 and argv[1] or "amqp://localhost:5672" session = Session(); try: broker = session.addBroker(url) except: print 'Unable to connect to broker' exit(1) quota = 0.01 negotiators = session.getObjects(_class="negotiator", _package='com.redhat.grid') print "Current Negotiator:" for negotiator in negotiators: print negotiator.Name print '\t',negotiator.GetLimits() print '\t',negotiator.GetRawConfig('GROUP_NAMES') old_quota = negotiator.GetRawConfig('GROUP_QUOTA_DYNAMIC_MGMT.CUMIN') print '\t',old_quota.Value new_quota = float(old_quota.Value)+quota print '\tSetting GROUP_QUOTA_DYNAMIC_MGMT.CUMIN to', new_quota ret = negotiator.SetRawConfig('GROUP_QUOTA_DYNAMIC_MGMT.CUMIN',str(new_quota)) if (ret.status != 0): print 'Call failed: ', ret exit(1) negotiator.Reconfig() got_quota = negotiator.GetRawConfig('GROUP_QUOTA_DYNAMIC_MGMT.CUMIN')
queueNames = [] if (args): for q in args: queueNames.append(q); else: parser.error("At least one QueueName is required.") sys.exit(1) sess = Session() try: brokerUrl = "amqp://%s:%s" % (opts.host, opts.port) broker = sess.addBroker(brokerUrl) except socket.error: sys.stderr.write("Failed to connect to broker at '%s'." % brokerUrl) sys.exit(2) qs = [q for q in sess.getObjects(_class="queue", _package="org.apache.qpid.broker") if q.name in queueNames] if not qs: sys.stderr.write("Didn't found queues matching provided QueueNames.") sys.exit() if (len(qs) > 0): for q in qs: for k, v in q.getStatistics(): stats[k] = v + stats.get(k, 0) for stat, count in stats.iteritems(): print "%s:%s" % (stat, count),
# shown for this test from qmf.console import Session from sys import exit, argv url = len(argv) > 1 and argv[1] or "amqp://localhost:5672" session = Session() try: broker = session.addBroker(url) except: print 'Unable to connect to broker' exit(1) quota = 0.01 negotiators = session.getObjects(_class="negotiator", _package='com.redhat.grid') print "Current Negotiator:" for negotiator in negotiators: print negotiator.Name print '\t', negotiator.GetLimits() print '\t', negotiator.GetRawConfig('GROUP_NAMES') old_quota = negotiator.GetRawConfig('GROUP_QUOTA_DYNAMIC_MGMT.CUMIN') print '\t', old_quota.Value new_quota = float(old_quota.Value) + quota print '\tSetting GROUP_QUOTA_DYNAMIC_MGMT.CUMIN to', new_quota ret = negotiator.SetRawConfig('GROUP_QUOTA_DYNAMIC_MGMT.CUMIN', str(new_quota)) if (ret.status != 0): print 'Call failed: ', ret exit(1) negotiator.Reconfig()
self.count += 1 condition.notify() condition.release() # print broker, seq, response url = len(argv) > 1 and argv[1] or "amqp://localhost:5672" count = len(argv) > 2 and int(argv[2]) or 10000 submission = len(argv) > 3 and argv[3] or "submission" klass = "JobServer" package = "com.redhat.grid" console = EmptyConsole() session = Session(console); broker = session.addBroker(url) servers = session.getObjects(_class=klass, _package=package) server = servers[0] print "Found server:", server print "Iteractions:", count print "Submission:", submission start = time.time() print "Start:", start for i in xrange(count): r = session._sendMethodRequest(server.getBroker(), server.getClassKey(), server.getObjectId(), "GetJobAds",
from qmf.console import Session from qmf.console import ClassKey from qpid.log import enable, DEBUG import sys s = Session() br = s.addBroker() service = s.getObjects(_class="ExampleService", _package="qmf.example.ejb")[0] print "Service Methods" print service.getMethods() base = service.getBase("Nathan", "A Cool Dude").result print "Base: ", base print "Base.name: ", base.name print "Base.description: ", base.description print "Base.stuff: ", base.stuff derived = service.getDerived("Gillian", "A Cool Dudette", 99).result print "Derived: ", derived print "Derived.name: ", derived.name print "Derived.description: ", derived.description print "Derived.stuff: ", derived.stuff print "Derived.count: ", derived.count many = service.findMany().result print "Many: ", many print "Many[0].stuff", many[0].stuff
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from qmf.console import Session from sys import exit, argv url = len(argv) > 1 and argv[1] or "amqp://localhost:5672" session = Session(); try: broker = session.addBroker(url) except: print 'Unable to connect to broker' exit(1) submitters = session.getObjects(_class="submitter", _package='com.redhat.grid') print "Current Submitters:" for submitter in submitters: print submitter.Name print "\tRunning jobs = ", submitter.RunningJobs print "\tIdle jobs = ", submitter.IdleJobs print "\tHeld jobs = ", submitter.HeldJobs,"\n" # get the scheduler ref schedulers = session.getObjects(_objectId=submitter.schedulerRef) for scheduler in schedulers: print "\tscheduler is:", scheduler.Name print "\tTotal running jobs = ", scheduler.TotalRunningJobs print "\tTotal idle jobs = ", scheduler.TotalIdleJobs print "\tTotal held jobs = ", scheduler.TotalHeldJobs print "\tTotal removed jobs = ", scheduler.TotalRemovedJobs
condition.release() # print broker, seq, response url = len(argv) > 1 and argv[1] or "amqp://localhost:5672" count = len(argv) > 2 and int(argv[2]) or 10000 submission = len(argv) > 3 and argv[3] or "submission" klass = "JobServer" package = "com.redhat.grid" console = EmptyConsole() session = Session(console) broker = session.addBroker(url) servers = session.getObjects(_class=klass, _package=package) server = servers[0] print "Found server:", server print "Iteractions:", count print "Submission:", submission start = time.time() print "Start:", start for i in xrange(count): r = session._sendMethodRequest(server.getBroker(), server.getClassKey(), server.getObjectId(), "GetJobAds", (submission, ))
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from qmf.console import Session from sys import exit, argv url = len(argv) > 1 and argv[1] or "amqp://localhost:5672" session = Session() try: broker = session.addBroker(url) except: print 'Unable to connect to broker' exit(1) submitters = session.getObjects(_class="submitter", _package='com.redhat.grid') print "Current Submitters:" for submitter in submitters: print submitter.Name print "\tRunning jobs = ", submitter.RunningJobs print "\tIdle jobs = ", submitter.IdleJobs print "\tHeld jobs = ", submitter.HeldJobs, "\n" # get the scheduler ref schedulers = session.getObjects(_objectId=submitter.schedulerRef) for scheduler in schedulers: print "\tscheduler is:", scheduler.Name print "\tTotal running jobs = ", scheduler.TotalRunningJobs print "\tTotal idle jobs = ", scheduler.TotalIdleJobs print "\tTotal held jobs = ", scheduler.TotalHeldJobs print "\tTotal removed jobs = ", scheduler.TotalRemovedJobs
from sys import exit, argv gridclasses = ["master", "grid", "collector", "negotiator", "slot", "scheduler", "jobserver", "submitter", "submission"] url = len(argv) > 1 and argv[1] or "amqp://localhost:5672" session = Session() try: broker = session.addBroker(url) except: print "Unable to connect to broker" exit(1) print session.getPackages() for gridclass in gridclasses: qmfobjects = session.getObjects(_class=gridclass, _package="com.redhat.grid") for qmfobject in qmfobjects: print "\n" print gridclass, "=", qmfobject.getObjectId() print "*****Properties*****" for prop in qmfobject.getProperties(): print " ", prop[0], "=", prop[1] print "*****Statistics*****" for stat in qmfobject.getStatistics(): print " ", stat[0], "=", stat[1] print "*****Methods********" for meth in qmfobject.getMethods(): print " ", meth if gridclass != "collector": print qmfobject.echo(1, gridclass + " test message") if gridclass == "submission":
'master', 'grid', 'collector', 'negotiator', 'slot', 'scheduler', 'jobserver', 'submitter', 'submission' ] url = len(argv) > 1 and argv[1] or "amqp://localhost:5672" session = Session() try: broker = session.addBroker(url) except: print 'Unable to connect to broker' exit(1) print session.getPackages() for gridclass in gridclasses: qmfobjects = session.getObjects(_class=gridclass, _package='com.redhat.grid') for qmfobject in qmfobjects: print '\n' print gridclass, '=', qmfobject.getObjectId() print "*****Properties*****" for prop in qmfobject.getProperties(): print " ", prop[0], "=", prop[1] print "*****Statistics*****" for stat in qmfobject.getStatistics(): print " ", stat[0], "=", stat[1] print "*****Methods********" for meth in qmfobject.getMethods(): print " ", meth if gridclass != 'collector': print qmfobject.echo(1, gridclass + ' test message') if gridclass == 'submission':