+
+ self.prepared = True
+ print >>sys.stderr, "\r\n OARrspec prepare node 10",self.nodes[10]
+ #print >>sys.stderr, " \r\n \t\t prepare prepare_nodes \r\n %s " %(self.nodes)
+
+ def get_nodes(self):
+ filtre = {}
+ #tags_filter = {}
+ #if slice and 'node_ids' in slice and slice['node_ids']:
+ #filter['node_id'] = slice['node_ids']
+ #tags_filter=filter.copy()
+
+ #filter.update({'peer_id': None})
+ nodes = self.driver.GetNodes(filtre)
+
+ #site_ids = []
+ interface_ids = []
+ tag_ids = []
+ nodes_dict = {}
+ for node in nodes:
+ #site_ids.append(node['site_id'])
+ #interface_ids.extend(node['interface_ids'])
+ #tag_ids.extend(node['node_tag_ids'])
+ nodes_dict[node['node_id']] = node
+
+ # get sites
+ #sites_dict = self.get_sites({'site_id': site_ids})
+ # get interfaces
+ #interfaces = self.get_interfaces({'interface_id':interface_ids})
+ # get tags
+ #node_tags = self.get_node_tags(tags_filter)
+ # get initscripts
+ #pl_initscripts = self.get_pl_initscripts()
+
+ #links = self.get_links(sites_dict, nodes_dict, interfaces)
+
+ rspec_nodes = []
+ for node in nodes:
+ # skip whitelisted nodes
+ #if node['slice_ids_whitelist']:
+ #if not slice or slice['slice_id'] not in node['slice_ids_whitelist']:
+ #continue
+ rspec_node = Node()
+ # xxx how to retrieve site['login_base']
+ #site_id=node['site_id']
+ #site=sites_dict[site_id]
+ rspec_node['component_id'] = hostname_to_urn(self.driver.root_auth, node['site_login_base'], node['hostname'])
+ rspec_node['component_name'] = node['hostname']
+ rspec_node['component_manager_id'] = hrn_to_urn(self.driver.root_auth, 'authority+sa')
+ rspec_node['authority_id'] = hrn_to_urn(PlXrn.site_hrn(self.driver.root_auth, node['site_login_base']), 'authority+sa')
+ rspec_node['boot_state'] = node['boot_state']
+ rspec_node['exclusive'] = 'True'
+ rspec_node['hardware_types']= [HardwareType({'name': 'senslab sensor node'})]
+ # only doing this because protogeni rspec needs
+ # to advertise available initscripts
+ #rspec_node['pl_initscripts'] = pl_initscripts.values()
+ # add site/interface info to nodes.
+ # assumes that sites, interfaces and tags have already been prepared.
+ #site = sites_dict[node['site_id']]
+ #if site['longitude'] and site['latitude']:
+ #location = Location({'longitude': site['longitude'], 'latitude': site['latitude']})
+ #rspec_node['location'] = location
+ rspec_node['interfaces'] = []
+ #if_count=0
+ #for if_id in node['interface_ids']:
+ #interface = Interface(interfaces[if_id])
+ #interface['ipv4'] = interface['ip']
+ #interface['component_id'] = PlXrn(auth=self.api.hrn, interface='node%s:eth%s' % (node['node_id'], if_count)).get_urn()
+ #rspec_node['interfaces'].append(interface)
+ #if_count+=1
+
+ #tags = [PLTag(node_tags[tag_id]) for tag_id in node['node_tag_ids']]
+ rspec_node['tags'] = []
+ #if node['node_id'] in slivers:
+ ## add sliver info
+ #sliver = slivers[node['node_id']]
+ #rspec_node['sliver_id'] = sliver['sliver_id']
+ #rspec_node['client_id'] = node['hostname']
+ #rspec_node['slivers'] = [sliver]
+
+ ## slivers always provide the ssh service
+ #login = Login({'authentication': 'ssh-keys', 'hostname': node['hostname'], 'port':'22'})
+ #service = Services({'login': login})
+ #rspec_node['services'] = [service]
+ rspec_nodes.append(rspec_node)
+ return (rspec_nodes)
+