import json
import traceback
+from math import ceil
class Rol:
agreement_id = None
enforcements = {}
violations = {}
+ keys = ['provider','agreement','date','status','result','ok']
+ ag_info = []
filter_ = None
form = FilterForm(request.GET)
if form.is_valid():
- print "IS VALID"
- filter_ = _get_filter_from_form(form)
+ 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(agreement_id, consumer_id=consumer_id, filter_=filter_)
+ agreements = _get_agreements(agreement_id, slice=slicename)
+
for agreement in agreements:
- enf = _get_enforcement(agreement.agreement_id)
+ row = []
+ provider = agreement.context.provider
+ row.append(provider) # Provider
+ row.append(agreement) # Agreement
+ row.append(agreement.context.time_formatted()) # Date
+
+ enf = _get_enforcement(agreement.agreement_id, provider)
+
if enf.enabled == 'true':
- enforcements[agreement.agreement_id] = "ACTIVE"
- else:
- enforcements[agreement.agreement_id] = "UNACTIVE"
- violations_list = _get_agreement_violations(agreement.agreement_id, "GT_Performance")
-
- if len(violations_list):
- violations[agreement.agreement_id] = float(violations_list[0]["actualValue"])*100
+ row.append('Evaluating') # Status
+ row.append('') # Result
+ row('') # Ok
else:
- violations[agreement.agreement_id] = 100
+ if agreement.guaranteestatus == "NON_DETERMINED":
+ row.append('Provisioned') # Status
+ row.append('') # Result
+ row.append('') # Ok
+
+ else:
+ row.append('Finished') # Status
+
+ violations_list = _get_agreement_violations(agreement.agreement_id, provider, "GT_Performance")
+
+ if len(violations_list) > 0:
+ value = '%.2f'%float(violations_list[0].actual_value)
+ row.append('%d'%(float(value)*100)) # Result
+ else:
+ row.append('100') # Result
+
+ if agreement.guaranteestatus == "VIOLATED":
+ row.append('false') # Ok
+
+ if agreement.guaranteestatus == "FULFILLED":
+ row.append('true') # Ok
+
+ ag_info.append(dict(zip(keys,row)))
template_env = {}
# write something of our own instead
template_env['slicename'] = slicename
template_env['enforcements'] = enforcements
template_env['last_violation_list'] = violations
-
+ template_env['ag_info'] = ag_info
+
+
# the prelude object in page contains a summary of the requirements() for all plugins
# define {js,css}_{files,chunks}
prelude_env = page.prelude_env()
template_env.update(prelude_env)
-
- return render_to_response (self.template_name, template_env, context_instance=RequestContext(request))
+
+ return render_to_response(self.template_name, template_env, context_instance=RequestContext(request))
class AgreementsFilter(object):
cc_myself = forms.BooleanField(required=False)
-def _get_agreements_client():
- return restclient.Factory.agreements()
+def _get_agreements_client(path=""):
+ return restclient.Factory.agreements(path)
def _get_violations_client():
agreement, response = agreements_client.getbyid(agreement_id)
return agreement
-def _get_enforcement(agreement_id):
+def _get_enforcement(agreement_id, testbed):
enforcements_client = _get_enforcements_client()
- enforcement, response = enforcements_client.getbyagreement(agreement_id)
+ enforcement, response = enforcements_client.getbyagreement(agreement_id, testbed)
return enforcement
def _get_filter_from_form(form):
except EmptyPage:
# If page is out of range (e.g. 9999), deliver first page.
violation_page = paginator.page(1)
-
- print "\n******************"
- print violations[-1]
- print "******************\n"
-
+
context = {
'agreement_id': agreement_id,
'guarantee_term': agreement.guaranteeterms[guarantee_name],
return render_to_response ('violations_template.html', context, context_instance=RequestContext(request))
#return render(request, 'agreement_detail.html', context)
-
-def _get_agreements_client():
- return restclient.Factory.agreements()
-
-
def _get_agreement(agreement_id):
agreements_client = _get_agreements_client()
agreement, response = agreements_client.getbyid(agreement_id)
return agreement
-def _get_agreements(agreement_id, provider_id=None, consumer_id=None, filter_=None):
+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:
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")
annotator = wsag_helper.AgreementAnnotator()
for agreement in agreements:
id_ = agreement.agreement_id
- status = _get_agreement_status(id_)
+ testbed = agreement.context.provider
+ status = _get_agreement_status(id_, testbed)
annotator.annotate_agreement(agreement, status)
if filter_ is not None:
agreements, response = agreements_client.getbyconsumer(consumer_id)
return agreements
-def _get_agreement_status(agreement_id):
+def _get_agreement_status(agreement_id, testbed):
agreements_client = _get_agreements_client()
- status, response = agreements_client.getstatus(agreement_id)
+ status, response = agreements_client.getstatus(agreement_id, testbed)
return status
-def _get_agreement_violations(agreement_id, term=None):
+def _get_agreement_violations(agreement_id, testbed, term=None):
violations_client = _get_violations_client()
- violations, response = violations_client.getbyagreement(agreement_id, term)
+ violations, response = violations_client.getbyagreement(agreement_id, testbed, term)
return violations
#import pdb; pdb.set_trace()
print "------------------------------------------------1"
data = {}
- for key, value in request.DATA.items():
+ for key, value in request.DATA.items(): # jgarcia review this
new_key = key
data[new_key] = value