X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sla%2Fslicetabsla.py;h=fea71f229dc0f50940dd54a5ab4338babb58f45d;hb=refs%2Fheads%2Ff4f-review;hp=564079be244c5837d5d720ee774976077e6f8412;hpb=3a4354b6bfe461218ddd2c1bdb89f6051624d328;p=myslice.git diff --git a/sla/slicetabsla.py b/sla/slicetabsla.py index 564079be..fea71f22 100755 --- a/sla/slicetabsla.py +++ b/sla/slicetabsla.py @@ -20,7 +20,12 @@ from django.http import HttpResponse import json import traceback +import re from math import ceil +from datetime import datetime +from dateutil.relativedelta import relativedelta +from dateutil.tz import tzlocal +from django.conf import settings class Rol: @@ -106,8 +111,6 @@ class SLAView (FreeAccessView, ThemeView): #agreements = _get_agreements(agreement_id, consumer_id=consumer_id, filter_=filter_) agreements = _get_agreements(agreement_id, slice=slicename) - print "--- AGREEMENTS ---" - print agreements for agreement in agreements: row = [] @@ -361,41 +364,80 @@ def _get_agreement_violations(agreement_id, testbed, term=None): class AgreementSimple(APIView): + + regex = r"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" + def build_response(self, code, text): response = HttpResponse(text, content_type="text/plain", status=code) return response - def post( self, request, **kwargs): + def post(self, request, **kwargs): #import pdb; pdb.set_trace() print "------------------------------------------------1" - data = {} - for key, value in request.DATA.items(): # jgarcia review this - new_key = key - data[new_key] = value + data = request.POST + + url = settings.SLA_MANAGER_URL + c = restclient.Client(url) + # for key, value in request.DATA.items(): # jgarcia review this + # data[key] = value - try: - template_id = data['template_id'] - except: - return self.build_response(400, 'Invalid template_id') + # print "---- DATA: ----" + # print "Data type: ", type(data) + # for key in data: + # print key, data.getlist(key) try: - user = data['user'] + # template_id = data['template_id'] + testbeds = data.getlist("testbeds") + user = data["user"] + resources = data.getlist("resources") + slice_id = data["slice"] except: - return self.build_response(400, 'Invalid user') + print "FAIL!" + return self.build_response(400, 'Invalid data') + + selected_resources = {} + + now = datetime.now(tzlocal()) + expiration_time = now + relativedelta(years=1) + + for testbed in testbeds: + selected_resources[testbed] = [r for r in resources if testbed in r] + template_id = testbed + try: + print "Calling createagreementsimplified with template_id:",template_id,"and user:",user + result = fed4fireservice.createagreementsimplified( + template_id, user, expiration_time, selected_resources) + print result + except Exception, e: + print traceback.format_exc() + print '%s (%s)' % (e, type(e)) + return self.build_response(400, 'Problem creating agreement') + + agreement_id = re.compile(self.regex).search(result.text).group(0) + + data = '{{ "id": "{}", \ + "slice": "{}", \ + "testbed": "{}" }}'.format(agreement_id, slice_id, testbed) + + c.post( + "sliver", + data, + headers = { + "content-type": "application/json", + "accept": "application/xml" + } + ) - try: - expiration_time = data['expiration_time'] - except: - return self.build_response(400, 'Invalid expiration_time') + return self.build_response(200, result) - try: - print "Calling createagreementsimplified with template_id:",template_id,"and user:",user - result = fed4fireservice.createagreementsimplified(template_id, user, expiration_time) - print result - except Exception, e: - print traceback.format_exc() - print '%s (%s)' % (e, type(e)) - - return self.build_response(400, 'Problem creating agreement') +class Testbeds(APIView): + def get(self, request, **kwargs): + c = restclient.Client("http://157.193.215.125:4001/sla-collector") + #url = settings.SLA_MANAGER_URL.replace("/sla","") + #c = restclient.Client(url) + print "**** URL ******", url + SLAtestbeds = c.get("testbeds") + # Future work: get SLA description for each testbed - return self.build_response(200, result) + return HttpResponse(SLAtestbeds.text, content_type="application/json", status=SLAtestbeds.status_code)