def rspec_to_omnispec(urn, rspec): # URN is that of the AM ospec = OmniSpec("rspec_sfa", urn) doc = ET.fromstring(rspec) for network in doc.findall('network'): for site in network.findall('site'): for node in site.findall('node'): net_name = network.get('name') site_id = site.get('id') site_name = site.find('name').text hostname = node.find('hostname').text r = OmniResource(hostname, '%s %s %s' % (net_name, site_id, hostname), 'vm') urn = 'urn:publicid:IDN+%s:%s+node+%s' % (net_name.replace( '.', ":"), site_name, hostname.split('.')[0]) misc = r['misc'] misc['site_id'] = site_id misc['site_name'] = site_name misc['hostname'] = hostname misc['net_name'] = net_name misc['node_id'] = node.get('id') if not node.find('sliver') is None: r.set_allocated(True) ospec.add_resource(urn, r) return ospec
def rspec_to_omnispec(urn, rspec): # URN is that of the AM ospec = OmniSpec("rspec_sfa", urn) doc = ET.fromstring(rspec) for network in doc.findall('network'): for site in network.findall('site'): for node in site.findall('node'): net_name = network.get('name') site_id = site.get('id') site_name = site.find('name').text hostname = node.find('hostname').text r = OmniResource(hostname, '%s %s %s' % (net_name, site_id, hostname), 'vm') urn = 'urn:publicid:IDN+%s:%s+node+%s' % (net_name.replace('.', ":"), site_name, hostname.split('.')[0]) misc = r['misc'] misc['site_id'] = site_id misc['site_name'] = site_name misc['hostname'] = hostname misc['net_name'] = net_name misc['node_id'] = node.get('id') if not node.find('sliver') is None: r.set_allocated(True) ospec.add_resource(urn, r) return ospec
def rspec_to_omnispec(urn, rspec): ospec = OmniSpec("rspec_of", urn) ospec = make_skeleton_of_ospec(ospec) doc = ET.fromstring(rspec) #sys.stderr.write(rspec) for network in doc.findall('network'): net_name = network.get('name') switches = network.findall('switches')[0] swmap = {} for switch in switches.findall('switch'): # convert: # "<switch urn="urn:publicid:IDN+openflow:stanford+switch:0" />" urn = switch.get('urn') # switchname = "stanford_network:switch:00:00:00:23:01:35:a5:5d" switchname = net_name + ':' + urn.split('+')[1] s = OmniResource(switchname, "OpenFlow Switch" ,'switch') options=['dl_src', 'dl_dst', 'dl_type', 'vlan_id', 'nw_src',\ 'nw_dst', 'nw_proto', 'tp_src', 'tp_dst'] for opt in options: s['options'][opt] = 'from=*, to=*' swmap[urn] = s ospec.add_resource(urn, s) for port in switch.findall('port'): port_urn = port.get('urn') port = 'port:' + port_urn.split('port:')[-1] swmap[urn]['options'][port] = "switch:* port:*" links = network.findall('links')[0] for link in links.findall('link'): # convert: # <link # src_urn="urn:publicid:IDN+openflow:stanford+switch:0+port:0 # dst_urn="urn:publicid:IDN+openflow:stanford+switch:1+port:0 # /> _,domain,src_switch,src_port = link.get('src_urn').split('+') _,_,dst_switch,dst_port = link.get('dst_urn').split('+') switch_urn = "urn:publicid:IDN+" + domain + "+" + src_switch swmap[switch_urn]['options'][src_port] = dst_switch + " " + dst_port #sw_ports = swmap[switch_urn]['misc'].setdefault('ports', {}) #sw_ports[src_port] = dst_switch + " " + dst_port #swmap[switch_urn]['options'][src_port] = "from=%s, to=%s" % (src_port.split(":")[-1], src_port.split(":")[-1]) return ospec
def rspec_to_omnispec(urn, rspec): # URN is that of the AM ospec = OmniSpec("rspec_gcf", urn) doc = ET.fromstring(rspec) for res in doc.findall('resource'): type = res.find('type').text id = res.find('id').text rurn = res.find('urn').text available = res.find('available').text available = available.lower() == 'true' r = OmniResource(id, 'node ' + id, type) r.set_allocated(not available) ospec.add_resource(rurn, r) return ospec
def rspec_to_omnispec(urn, rspec): ospec = OmniSpec("rspec_pg", urn) doc = ET.fromstring(rspec) #add_nodes(ospec, doc) #add_links(ospec, doc) add_options(ospec, doc) return ospec