Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
# 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)
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
# 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')
Ejemplo n.º 7
0
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),

Ejemplo n.º 8
0
# 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()
Ejemplo n.º 9
0
        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",
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
# 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
Ejemplo n.º 12
0
        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, ))
Ejemplo n.º 13
0
# 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
Ejemplo n.º 14
0
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":
Ejemplo n.º 15
0
    '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':