if Callids().already_handled(call_id): return ""
         # get slice's hrn from options
         xrn = options.get('geni_slice_urn', None)
+        cached = options.get('cached', True) 
         (hrn, _) = urn_to_hrn(xrn)
     
         version_manager = VersionManager()
             version_string = version_string + "_"+options.get('info', 'default')
     
         # look in cache first
-        if self.caching and api.cache and not xrn:
+        if self.caching and api.cache and not xrn and cached:
             rspec = api.cache.get(version_string)
             if rspec:
                 api.logger.info("aggregate.ListResources: returning cached value for hrn %s"%hrn)
     
         #panos: passing user-defined options
         #print "manager options = ",options
-        aggregate = Aggregate(api, options)
-        rspec =  aggregate.get_rspec(slice_xrn=xrn, version=rspec_version)
+        aggregate = Aggregate(api)
+        rspec =  aggregate.get_rspec(slice_xrn=xrn, version=rspec_version, options=options)
     
         # cache the result
         if self.caching and api.cache and not xrn:
 
     #panos new user options variable
     user_options = {}
 
-    def __init__(self, api, user_options={}):
+    def __init__(self, api):
         self.api = api
-        self.user_options = user_options
-
+    
     def get_sites(self, filter={}):
         sites = {}
         for site in self.api.driver.GetSites(filter):
         
         return (slice, slivers)
 
-    def get_nodes_and_links(self, slice=None,slivers=[]):
+    def get_nodes_and_links(self, slice=None,slivers=[], options={}):
         filter = {}
         tags_filter = {}
         if slice and 'node_ids' in slice and slice['node_ids']:
             filter['node_id'] = slice['node_ids']
             tags_filter=filter.copy()
+
+        geni_available = options.get('geni_available')    
+        if geni_available:
+            filter['boot_state'] = 'boot'     
         
         filter.update({'peer_id': None})
         nodes = self.api.driver.GetNodes(filter)
         return (rspec_nodes, links)
              
         
-    def get_rspec(self, slice_xrn=None, version = None):
+    def get_rspec(self, slice_xrn=None, version = None, options={}):
 
         version_manager = VersionManager()
         version = version_manager.get_version(version)
             rspec_version = version_manager._get_version(version.type, version.version, 'manifest')
 
         slice, slivers = self.get_slice_and_slivers(slice_xrn)
-        rspec = RSpec(version=rspec_version, user_options=self.user_options)
+        rspec = RSpec(version=rspec_version, user_options=options)
         if slice and 'expires' in slice:
             rspec.xml.set('expires',  epochparse(slice['expires']))