-import os.path
+import os, os.path
import datetime
from sfa.util.faults import SfaAPIError
from sfa.trust.certificate import Keypair, Certificate
from sfa.trust.credential import Credential
from sfa.trust.rights import determine_rights
-
-# this is wrong all right, but temporary, will use generic
from sfa.server.xmlrpcapi import XmlrpcApi
-import os
-import datetime
+from sfa.util.genicode import GENICODE
+
+# thgen xxx fixme this is wrong all right, but temporary, will use generic
+from sfa.util.table import SfaTable
####################
class SfaApi (XmlrpcApi):
if not auth_hrn or hrn == self.config.SFA_INTERFACE_HRN:
auth_hrn = hrn
auth_info = self.auth.get_auth_info(auth_hrn)
- table = self.SfaTable()
+ # xxx thgen fixme - use SfaTable hardwired for now
+ #table = self.SfaTable()
+ table = SfaTable()
records = table.findObjects({'hrn': hrn, 'type': 'authority+sa'})
if not records:
raise RecordNotFound
# cache version for 24 hours
self.cache.add(cache_key, server_version, ttl= 60*60*24)
return server_version
+
+
+ def get_geni_code(self, result):
+ code = {
+ 'geni_code': GENICODE.SUCCESS,
+ 'am_type': 'sfa',
+ 'am_code': None,
+ }
+ if isinstnace(result, SfaFault):
+ code['geni_code'] = result.faultCode
+ code['am_code'] = result.faultCode
+
+ return code
+
+ def get_geni_value(self, result):
+ value = result
+ if isinstance(result, SfaFault):
+ value = ""
+ return value
+
+ def get_geni_output(self, result):
+ output = ""
+ if isinstance(result, SFaFault):
+ output = result.faultString
+ return output
+
+ def prepare_response_v2_am(self, result):
+ response = {
+ 'code': self.get_geni_code(result),
+ 'value': self.get_geni_value(result),
+ 'output': self.get_geni_output(result),
+ }
+ return response
+
+ def prepare_response(self, result, method=""):
+ """
+ Converts the specified result into a standard GENI compliant
+ response
+ """
+ if self.interface.lower() == 'aggregate':
+ if hasattr(self.config, 'SFA_AGGREGATE_API_VERSION') and \
+ self.config.SFA_AGGREGATE_API_VERSION == "2":
+ result = self.prepare_response_v2_am(result)
+ return XmlrpcApi.prepare_response(self, result, method)
+