X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sla%2Fslicetabsla.py;h=cc26b2547b5b9185e9f5daabd2662020c81137cf;hb=deee82377a1f72626cede01fdfec5e9d7cc274ce;hp=5fcdc04ffcb51889cf89a80a019dee4894969fda;hpb=7db03972cd9a884442c9e468cfcadc564ed9b9a7;p=myslice.git diff --git a/sla/slicetabsla.py b/sla/slicetabsla.py index 5fcdc04f..cc26b254 100755 --- a/sla/slicetabsla.py +++ b/sla/slicetabsla.py @@ -3,6 +3,7 @@ from __future__ import print_function # this somehow is not used anymore - should it not be ? import ast from datetime import datetime +import json import pytz from django.template import RequestContext from django.shortcuts import render_to_response @@ -25,62 +26,6 @@ from django.http import HttpResponse from myslice.settings import logger, SLA_COLLECTOR_URL - -# class AgreementsFilter(object): -# def __init__(self, status=None, provider=None, consumer=None): -# self.status = status -# self.provider = provider -# self.consumer = consumer -# -# def __repr__(self): -# return "".format( -# self.status, self.provider, self.consumer -# ) -# -# @staticmethod -# def _check(expectedvalue, actualvalue): -# if expectedvalue is None or expectedvalue == '': -# return True -# else: -# return actualvalue == expectedvalue -# -# def check(self, agreement): -# """Check if this agreement satisfy the filter. -# -# The agreement must be previously annotated -# """ -# guaranteestatus = agreement.guaranteestatus -# provider = agreement.context.provider -# consumer = agreement.context.consumer -# return ( -# AgreementsFilter._check(self.status, guaranteestatus) and -# AgreementsFilter._check(self.provider, provider) and -# AgreementsFilter._check(self.consumer, consumer) -# ) - - -# class FilterForm(forms.Form): -# _attrs = {'class': 'form-control'} -# exclude = () -# status = forms.ChoiceField( -# choices=[ -# ('', 'All'), -# (wsag_model.AgreementStatus.StatusEnum.FULFILLED, 'Fulfilled'), -# (wsag_model.AgreementStatus.StatusEnum.VIOLATED, 'Violated'), -# (wsag_model.AgreementStatus.StatusEnum.NON_DETERMINED, 'Non determined')], -# widget=forms.Select(attrs=_attrs), -# required=False -# ) -# provider = forms.CharField( -# widget=forms.TextInput(attrs=_attrs), -# required=False -# ) -# consumer = forms.CharField( -# widget=forms.TextInput(attrs=_attrs), -# required=False -# ) - - class SLAView(FreeAccessView, ThemeView): template_name = 'slice-tab-sla.html' @@ -88,9 +33,6 @@ class SLAView(FreeAccessView, ThemeView): page = Page(request) - # logger.debug("SLA slice name: {}".format(slicename)) - - # consumer_id = None agreement_id = None enforcements = {} violations = {} @@ -99,14 +41,6 @@ class SLAView(FreeAccessView, ThemeView): 'ok', 'slivers'] ag_info = [] - # filter_ = None - # form = FilterForm(request.GET) - # if form.is_valid(): - # filter_ = _get_filter_from_form(form) - - # consumer_id = _get_consumer_id(request) - - # agreements = _get_agreements(agreement_id, consumer_id=consumer_id, filter_=filter_) agreements = _get_agreements_by_slice(slicename) for agreement in agreements: @@ -117,7 +51,6 @@ class SLAView(FreeAccessView, ThemeView): row.append(agreement.context.time_formatted()) # Date enf = _get_enforcement(agreement.agreement_id, provider) - logger.debug("SLA AAAAA: {}".format(agreement.guaranteestatus)) if enf.enabled == 'true': row.append('Evaluating') # Status @@ -176,46 +109,6 @@ class SLAView(FreeAccessView, ThemeView): return render_to_response(self.template_name, template_env, context_instance=RequestContext(request)) -# class AgreementsFilter(object): -# def __init__(self, status=None, provider=None, consumer=None): -# self.status = status -# self.provider = provider -# self.consumer = consumer -# -# def __repr__(self): -# return "".format( -# self.status, self.provider, self.consumer -# ) -# -# @staticmethod -# def _check(expectedvalue, actualvalue): -# if expectedvalue is None or expectedvalue == '': -# return True -# else: -# return actualvalue == expectedvalue -# -# def check(self, agreement): -# """Check if this agreement satisfy the filter. -# -# The agreement must be previously annotated -# """ -# guaranteestatus = agreement.guaranteestatus -# provider = agreement.context.provider -# consumer = agreement.context.consumer -# return ( -# AgreementsFilter._check(self.status, guaranteestatus) and -# AgreementsFilter._check(self.provider, provider) and -# AgreementsFilter._check(self.consumer, consumer) -# ) - - -# class ContactForm(forms.Form): -# subject = forms.CharField(max_length=100) -# message = forms.CharField() -# sender = forms.EmailField() -# cc_myself = forms.BooleanField(required=False) - - def _get_agreements_client(): return restclient.Factory.agreements() @@ -244,13 +137,6 @@ def _get_enforcement(agreement_id, testbed): return enforcement -# def _get_filter_from_form(form): -# -# data = form.cleaned_data -# result = AgreementsFilter( -# data["status"], data["provider"], data["consumer"]) -# return result - def agreement_term_violations(request, agreement_id, guarantee_name): page = Page(request) prelude_env = page.prelude_env() @@ -288,9 +174,6 @@ def agreement_term_violations(request, agreement_id, guarantee_name): return render_to_response('violations_template.html', context, context_instance=RequestContext(request)) -# return render(request, 'violations_template.html', context) - - # TODO Change function to class def agreement_details(request, agreement_id): page = Page(request) @@ -316,38 +199,6 @@ def agreement_details(request, agreement_id): #return render(request, 'agreement_detail.html', context) -# def _get_agreements(agreement_id, slice=None, provider_id=None, consumer_id=None, filter_=None): -# -# agreements_client = _get_agreements_client() -# if agreement_id is None: -# if consumer_id is not None: -# agreements, response = agreements_client.getbyconsumer(consumer_id) -# elif provider_id is not None: -# agreements, response = agreements_client.getbyprovider(provider_id) -# elif slice is not None: -# agreements_client = _get_agreements_client("slice") -# agreements, response = agreements_client.getbyslice(slice) -# else: -# raise ValueError( -# "Invalid values: consumer_id and provider_id are None") -# else: -# agreement, response = agreements_client.getbyid(agreement_id) -# agreements = [agreement] -# -# annotator = wsag_helper.AgreementAnnotator() -# for agreement in agreements: -# id_ = agreement.agreement_id -# testbed = agreement.context.provider -# status = _get_agreement_status(id_, testbed) -# annotator.annotate_agreement(agreement, status) -# -# if filter_ is not None: -# print "FILTERING ", repr(filter_) -# agreements = filter(filter_.check, agreements) -# else: -# print "NOT FILTERING" -# return agreements - def _get_agreements_by_slice(slice): agreements_client = _get_agreements_client() agreements, response = agreements_client.getbyslice(slice) @@ -362,12 +213,6 @@ def _get_agreements_by_slice(slice): return agreements -# def _get_agreements_by_consumer(consumer_id): -# -# agreements_client = _get_agreements_client() -# agreements, response = agreements_client.getbyconsumer(consumer_id) -# return agreements - def _get_agreement_status(agreement_id, testbed): agreements_client = _get_agreements_client() status, response = agreements_client.getstatus(agreement_id, testbed) @@ -392,6 +237,26 @@ class Testbeds(FreeAccessView, ThemeView): return HttpResponse(SLAtestbeds.text, content_type="application/json", status=SLAtestbeds.status_code) +class AgreementTemplates(FreeAccessView, ThemeView): + def get(self, request, *args, **kwargs): + c = restclient.Templates(SLA_COLLECTOR_URL) + testbed = kwargs.get('testbed', None) + + #logger.debug("AAAAA testbed: {}".format(testbed)) + + templates, response = c.getall(testbed) + service_level_objectives = [] + + #logger.debug("BBBBB templates: {}".format(templates)) + + for template in templates: + service_level_objectives.append( + [v.servicelevelobjective for v in template.guaranteeterms.values()]) + + logger.debug("CCCCC slo: {}".format(service_level_objectives)) + + return HttpResponse(service_level_objectives, content_type="application/json", status=response.status_code) + class CreateAgreement(LoginRequiredView, ThemeView): def post(self, request, *args, **kwargs): @@ -402,22 +267,30 @@ class CreateAgreement(LoginRequiredView, ThemeView): pattern = re.compile(testbed_urn_regex) testbed_urn = pattern.search(data["SLIVER_INFO_AGGREGATE_URN"]).group(1) - tstmp = data["SLIVER_INFO_EXPIRATION"] + # Fix for django QueryDict list parameters + slivers = data.getlist("SLIVER_INFO_URN[]") + data["SLIVER_INFO_URN"] = slivers + del data["SLIVER_INFO_URN[]"] + # Timestamp to ISO date + timezone + tstmp = data["SLIVER_INFO_EXPIRATION"] dt = datetime.fromtimestamp(float(tstmp)) - gmt_2 = pytz.timezone("Etc/GMT-2") # FIXME: hardcoded for demo purposes - dlocal = gmt_2.localize(dt).isoformat() - + # gmt_2 = pytz.timezone("Etc/GMT-2") + # dlocal = gmt_2.localize(dt).isoformat() + dlocal = dt.isoformat() + "CET" # FIXME: hardcoded for demo purposes data["SLIVER_INFO_EXPIRATION"] = dlocal - logger.debug("SLA Agreement parameters: {}".format(data)) + # logger.debug("SLA Agreement parameters: {}".format(data.dict())) + # import pdb; pdb.set_trace() try: - response = c.post("agreementslist/", data=data, testbed=testbed_urn) + response = c.post("agreementslist/", data=json.dumps(data), + headers={"accept": "application/json", + "content-type": "application/json"}) except Exception as e: - import traceback, sys - - traceback.print_exc(file=sys.stdout) - logger.debug("SLA ERROR {}".format(e.message)) + # import traceback, sys + # + # traceback.print_exc(file=sys.stdout) + logger.debug("SLA Error: CreateAgreement {}".format(e.message)) return HttpResponse(response.text, status=response.status_code)