- hrn = None
- if options.has_key('geni_slice_urn'):
- xrn = options['geni_slice_urn']
- hrn, _ = urn_to_hrn(xrn)
-
- ValidCreds = self.api.auth.checkCredentials(creds, '', hrn)
- origin_hrn = Credential(string=ValidCreds[0]).get_gid_caller().get_hrn()
-
-
- manager_base = 'sfa.managers'
-
- if self.api.interface in ['geni_am']:
- mgr_type = self.api.config.SFA_GENI_AGGREGATE_TYPE
- manager_module = manager_base + ".geni_am_%s" % mgr_type
- manager = __import__(manager_module, fromlist=[manager_base])
- rspec = manager.ListResources(self.api, ValidCreds, options)
- outgoing_rules = SFATablesRules('OUTGOING')
-
-
- filtered_rspec = rspec
- if outgoing_rules.sorted_rule_list:
- context = {'sfa':{'user':{'hrn':origin_hrn}, 'slice':{'hrn':None}}}
- outgoing_rules.set_context(context)
- filtered_rspec = outgoing_rules.apply(rspec)
-
- if options.has_key('geni_compressed') and options['geni_compressed'] == True:
- filtered_rspec = zlib.compress(rspec).encode('base64')
-
-
- return filtered_rspec
-
-
+ valid_creds = self.api.auth.checkCredentialsSpeaksFor(
+ creds, 'listnodes', options=options)
+
+ # get hrn of the original caller
+ origin_hrn = options.get('origin_hrn', None)
+ if not origin_hrn:
+ origin_hrn = Credential(
+ cred=valid_creds[0]).get_gid_caller().get_hrn()
+ rspec = self.api.manager.ListResources(self.api, creds, options)
+
+ # filter rspec through sfatables
+ if self.api.interface in ['aggregate']:
+ chain_name = 'OUTGOING'
+ elif self.api.interface in ['slicemgr']:
+ chain_name = 'FORWARD-OUTGOING'
+ self.api.logger.debug(
+ "ListResources: sfatables on chain %s" % chain_name)
+ filtered_rspec = run_sfatables(chain_name, '', origin_hrn, rspec)
+
+ if 'geni_compressed' in options and options['geni_compressed'] == True:
+ filtered_rspec = zlib.compress(filtered_rspec).encode('base64')
+
+ return filtered_rspec