예제 #1
0
    def test_get_requirement_string(self):
        for k in ({'k': 0}, lambda x: x, 1, object()):
            self.assertRaises(TypeError, condor.get_requirement_string, k, [])
        for k in ('', {'k': 0}, lambda x: x, 1, object()):
            self.assertRaises(TypeError, condor.get_requirement_string, '', k)

        self.assertRaises(ValueError, condor.get_requirement_string, 'MEM,G,1;G', [])       # Wrong ';'
        self.assertRaises(ValueError, condor.get_requirement_string, 'BADKEY,G,1,G', [])    # Wrong 'BADKEY'
        self.assertRaises(KeyError, condor.get_requirement_string, 'MEM,g,1,G', [])     # Wrong 'g'
        self.assertRaises(ValueError, condor.get_requirement_string, 'MEM,G,1,t', [])       # Wrong 't'

        # vms must be a list of lists
        self.assertRaises(TypeError, condor.get_requirement_string, 'MEM,G,1,T', ['node1', 'Idle'])
        self.assertRaises(TypeError, condor.get_requirement_string, 'MEM,G,1,T', [[1, 'Idle']])
        condor.get_requirement_string('SLT,B,12@mix18', [])

        # Output
        req = condor.get_requirement_string('MEM,G,1,G', [])
        self.assertTrue(type(req) == types.StringType)
        self.assertTrue(req.startswith('Requirements = ('))
        self.assertTrue(req.endswith(')'))
예제 #2
0
파일: condor.py 프로젝트: gotsunami/Youpi
@login_required
@profile
def get_condor_requirement_string(request):
    """
    Get requirement string from saved policy
    """
    try:
        name = request.POST["Name"]
    except KeyError, e:
        raise HttpResponseServerError("Bad parameters")

    error = req = ""
    try:
        policy = CondorNodeSel.objects.filter(label=name, is_policy=True)[0]
        vms = manager.cluster.getStatus()
        req = get_requirement_string(policy.nodeselection, vms)
    except Exception, e:
        error = e

    return HttpResponse(str({"ReqStr": str(req), "Error": str(error)}), mimetype="text/plain")


@login_required
@profile
def compute_requirement_string(request):
    """
    Compute Condor's requirement string
    """
    try:
        params = request.POST["Params"]
    except KeyError, e: