def __init__(self, *args, **kwargs): super(TimingTestCase, self).__init__(*args, **kwargs) if self.sch is None: configuration.select('marvinctld', preset={'inventory': {'sync': False}, 'database': TEMP_DB, 'log': {'level': 50, 'file': TEMP_LOG}}) from scheduler import Scheduler self.sch = Scheduler(refresh=True) self.assertIsNotNone(self.sch.db()) self.assertTrue(os.path.isfile(TEMP_DB)) userid, error = self.sch.create_user('admin', 'admin', 'admin') self.assertIsNotNone(userid) c = self.sch.db().cursor() nodes = self.sch.get_nodes() if nodes is None or len(nodes) < 25: print "creating 25 nodes...", for nodeid in xrange(1,25): c.execute("INSERT OR IGNORE INTO nodes VALUES (?, ?, ?, ?)", (nodeid, 'test %i' % nodeid, 'active', 0)) self.sch.db().commit() self.sch.set_node_types(nodeid, 'status:test') print "done."
def __init__(self, *args, **kwargs): super(SchedulerTestCase, self).__init__(*args, **kwargs) if self.sch is None: configuration.select('marvinctld', preset={'inventory': {'sync': False}, 'database': TEMP_DB, 'repository': { 'deployment':'server.xyz'}, 'log': {'level': 50, 'file': TEMP_LOG}}) from scheduler import Scheduler self.sch = Scheduler() c = self.sch.db().cursor() now = int(time.time()) c.execute("INSERT OR IGNORE INTO nodes VALUES (?, ?, ?, ?)", ('1', 'test-node', 'active', now)) c.execute("INSERT OR IGNORE INTO nodes VALUES (?, ?, ?, ?)", ('2', 'test-node 2', 'active', now)) c.execute("INSERT OR REPLACE INTO node_interface " "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", ('1', 'a', 'ab', 'abc', 'abcd', 0, 0, 0, 0, 0, 0)) c.execute("INSERT OR REPLACE INTO node_interface " "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", ('2', 'a', 'ab', 'abc', 'abcd', 0, 0, 0, 0, 0, 0)) self.sch.db().commit() self.sch.set_node_types(1, 'status:test')
Allows to schedule tasks through a GENI AMv3 API XML-RPC interface. """ import logging from logging.handlers import WatchedFileHandler import simplejson as json import traceback import configuration from SimpleXMLRPCServer import SimpleXMLRPCServer as XRS from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler as XRH from lxml import etree as e from time import strftime # from subprocess import check_output config = configuration.select('marvinctld') GENI_RT_SUCCESS = 0 GENI_RT_BADARGS = 1 GENI_RT_REFUSED = 7 RSPEC_NS = "http://www.geni.net/resources/rspec/3" RSPEC = "{" + RSPEC_NS + "}%s" XSI_NS = "http://www.w3.org/2001/XMLSchema-instance" XSI = "{" + XSI_NS + "}%s" XSI_SCHEMA_LOCATION = "http://www.geni.net/resources/rspec/3 " \ "http://www.geni.net/resources/rspec/3/ad.xsd" NSMAP = { None: RSPEC_NS, "xsi": XSI_NS }
import threading from datetime import datetime from subprocess import Popen, PIPE sys.path.append("/usr/bin") # to import node utilities from interfaces import get_interfaces requests.packages.urllib3.disable_warnings() if len(sys.argv) < 2: cfile = "/etc/marvind.conf" print "Using default configuration at %s" % cfile else: nope, cfile = sys.argv config = configuration.select("marvind", cfile) log = logging.getLogger("marvind") log.addHandler(WatchedFileHandler(config["log"]["file"])) log.setLevel(config["log"]["level"]) print "Logging to %s" % (config["log"]["file"],) AT_TIME_FORMAT = "%H:%M %Y-%m-%d" SYSEVENT_SCHEDULING_STARTED = "Scheduling.Started" PREFETCH_LIMIT = 3 class SchedulingClient: