4 # import modules used here -- sys is a very standard one
10 from sfa.util.xrn import *
11 from sfa.util.plxrn import *
12 #from sfa.rspecs.sfa_rspec import SfaRSpec
13 from sfa.rspecs.rspec import RSpec
14 #from sfa.rspecs.pg_rspec import PGRSpec
15 #from sfa.rspecs.rspec_version import RSpecVersion
16 from sfa.rspecs.version_manager import VersionManager
17 from sfa.senslab.OARrestapi import *
18 from sfa.senslab.slabdriver import SlabDriver
19 from sfa.util.config import Config
32 #panos new user options variable
35 def __init__(self ,api, user_options={}):
36 self.OARImporter = OARapi()
37 self.driver = SlabDriver(Config())
38 self.user_options = user_options
40 print >>sys.stderr,"\r\n \r\n \t\t_____________INIT OARRSPEC__ api : %s" %(api)
42 def prepare_sites(self, force=False):
43 print >>sys.stderr,'\r\n \r\n ++++++++++++++\t\t prepare_sites'
44 if not self.sites or force:
45 for site in self.OARImporter.GetSites():
46 print >>sys.stderr,'prepare_sites : site ', site
47 self.sites[site['site_id']] = site
50 def prepare_nodes(self, force=False):
51 if not self.nodes or force:
52 for node in self.driver.GetNodes():
53 #for node in self.OARImporter.GetNodes():
54 self.nodes[node['node_id']] = node
55 print >>sys.stderr,'prepare_nodes:node', node
57 #def prepare_interfaces(self, force=False):
58 #if not self.interfaces or force:
59 #for interface in self.api.plshell.GetInterfaces(self.api.plauth):
60 #self.interfaces[interface['interface_id']] = interface
62 #def prepare_node_tags(self, force=False):
63 #if not self.node_tags or force:
64 #for node_tag in self.api.plshell.GetNodeTags(self.api.plauth):
65 #self.node_tags[node_tag['node_tag_id']] = node_tag
67 def prepare_links(self, force=False):
68 if not self.links or force:
71 def prepare(self, force=False):
72 if not self.prepared or force:
73 #self.prepare_sites(force)
74 self.prepare_nodes(force)
75 #self.prepare_links(force)
76 #self.prepare_interfaces(force)
77 #self.prepare_node_tags(force)
78 # add site/interface info to nodes
79 for node_id in self.nodes:
80 node = self.nodes[node_id]
81 #site = self.sites[node['site_id']]
82 #interfaces = [self.interfaces[interface_id] for interface_id in node['interface_ids']]
83 #tags = [self.node_tags[tag_id] for tag_id in node['node_tag_ids']]
84 node['network'] = self.driver.root_auth
85 node['network_urn'] = hrn_to_urn(node['network'], 'authority+am')
86 node['urn'] = hostname_to_urn(node['network'], node['site_login_base'], node['hostname'])
87 node['site_urn'] = hrn_to_urn(PlXrn.site_hrn(node['network'], node['site_login_base']), 'authority+sa')
89 #node['interfaces'] = interfaces
91 #print >>sys.stderr, "\r\n OAR prepare ", node
94 print >>sys.stderr, " \r\n \t\t prepare prepare_nodes \r\n %s " %(self.nodes)
95 #from plc/aggregate.py
96 def get_rspec(self, slice_xrn=None, version = None):
97 print>>sys.stderr, " \r\n OARrspec \t\t get_spec **************\r\n"
101 version_manager = VersionManager()
102 version = version_manager.get_version(version)
103 #rspec_version = RSpecVersion(version)
104 #print >>sys.stderr, '\r\n \t\t rspec_version type',version_manager['type']
107 rspec_version = version_manager._get_version(version.type, version.version, 'ad')
109 rspec_version = version_manager._get_version(version.type, version.version, 'manifest')
111 rspec = RSpec(version=rspec_version, user_options=self.user_options)
112 rspec.version.add_nodes(self.nodes.values())
113 print >>sys.stderr, 'after add_nodes'
116 #rspec.add_links(self.links.values())
120 #slice_hrn, _ = urn_to_hrn(slice_xrn)
121 #slice_name = hrn_to_pl_slicename(slice_hrn)
122 #slices = self.api.plshell.GetSlices(self.api.plauth, slice_name)
126 #tags = self.api.plshell.GetSliceTags(self.api.plauth, slice['slice_tag_ids'])
127 #for node_id in slice['node_ids']:
129 #sliver['hostname'] = self.nodes[node_id]['hostname']
131 #slivers.append(sliver)
133 ## if tag isn't bound to a node then it applies to all slivers
134 #if not tag['node_id']:
135 #sliver['tags'].append(tag)
137 #tag_host = self.nodes[tag['node_id']]['hostname']
138 #if tag_host == sliver['hostname']:
139 #sliver.tags.append(tag)
140 #rspec.add_slivers(slivers)