class Factory(object):
@staticmethod
- def agreements():
+ def agreements(path):
"""Returns a REST client for Agreements
:rtype : Agreements
"""
- return Agreements(rooturl)
+ return Agreements(rooturl, path)
@staticmethod
def providers():
c.get("/resource", headers = { "accept": "application/json" })
"""
url = _buildpath_(self.rooturl, path)
- url = url + "?testbed=iminds" # TODO remove hardcoded string
+ if "testbed" in kwargs:
+ url = url + "?testbed=" + kwargs["testbed"]
#kwargs['params']['testbed'] = 'iminds'
if "headers" not in kwargs:
kwargs["headers"] = {"accept": "application/xml"}
# kwargs["auth"] = HTTPBasicAuth(settings.SLA_MANAGER_USER,
# settings.SLA_MANAGER_PASSWORD)
+
+ for key, values in kwargs.iteritems():
+ print key, values
+
result = requests.get(url, **kwargs)
- #print "GET {} {} {}".format(
- # result.url, result.status_code, result.text[0:70])
+ print "GET {} {} {}".format(
+ result.url, result.status_code, result.text[0:70])
+ print result.encoding
return result
resources = self._processresult(r, self.listconverter)
return resources, r
- def getbyid(self, id):
+ def getbyid(self, id, params):
"""Get resource 'id'"""
- r = self.client.get(id)
+ r = self.client.get(id, params=params)
resource = _Resource._processresult(r, self.converter)
return resource, r
- def get(self, params):
+ def get(self, path, params):
"""Generic query over resource: GET /resource?q1=v1&q2=v2...
:param dict[str,str] params: values to pass as get parameters
"""
- r = self.client.get("", params=params)
+ if path is None:
+ path = ""
+
+ r = self.client.get(path, params=params)
resources = self._processresult(r, self.listconverter)
return resources, r
"""
return self.res.get(dict(providerId=providerid))
- def getstatus(self, agreementid):
+ def getstatus(self, agreementid, testbed):
"""Get guarantee status of an agreement
:param str agreementid :
:rtype : wsag_model.AgreementStatus
"""
- path = _buildpath_(agreementid, "guaranteestatus")
- r = self.res.client.get(path, headers={'accept': 'application/json'})
+ path = _buildpath_(_AGREEMENTS_PATH, agreementid, "guaranteestatus")
+ r = self.res.client.get(path, headers={'accept': 'application/json'},
+ params={'testbed': testbed})
json_obj = r.json()
return status, r
+ def getbyslice(self, slicename):
+ """Get the agreements corresponding to a slice
+
+ :rtype : list[wsag_model.Agreement]
+ """
+ return self.res.get(slicename, dict())
+
def create(self, agreement):
"""Create a new agreement
"""
return self.res.getbyid(violationid)
- def getbyagreement(self, agreement_id, term=None):
+ def getbyagreement(self, agreement_id, testbed, term=None):
"""Get the violations of an agreement.
:param str agreement_id:
violations from all terms will be returned
:rtype: list[wsag_model.Violation]
"""
-
- return self.res.get(
- {"agreementId": agreement_id, "guaranteeTerm": term})
+ path = _buildpath_(agreement_id, term)
+ return self.res.get(path, params={"testbed": testbed})
class Enforcements(object):
"""
return self.res.getall()
- def getbyagreement(self, agreement_id):
+ def getbyagreement(self, agreement_id, testbed):
"""Get the enforcement of an agreement.
:param str agreement_id:
:rtype: list[wsag_model.Enforcement]
"""
- return self.res.getbyid(agreement_id)
+ return self.res.getbyid(agreement_id, params={"testbed": testbed})
def _buildpath_(*paths):
+ if "" in paths:
+ paths = [path for path in paths if path != ""]
+
return "/".join(paths)
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)
+ print "--- AGREEMENTS ---"
+ print agreements
for agreement in agreements:
row = []
- row.append(agreement.context.provider) # Provider
+ 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)
+ enf = _get_enforcement(agreement.agreement_id, provider)
if enf.enabled == 'true':
row.append('Evaluating') # Status
else:
row.append('Finished') # Status
- violations_list = _get_agreement_violations(agreement.agreement_id, "GT_Performance")
+ violations_list = _get_agreement_violations(agreement.agreement_id, provider, "GT_Performance")
if len(violations_list) > 0:
value = '%.2f'%float(violations_list[0].actual_value)
ag_info.append(dict(zip(keys,row)))
- # enf = _get_enforcement(agreement.agreement_id)
- # 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
- # else:
- # violations[agreement.agreement_id] = 100
-
template_env = {}
# write something of our own instead
# more general variables expected in the template
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):
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