from lxml import etree
from StringIO import StringIO
from sfa.util.xrn import *
-from sfa.rspecs.pg_rspec import PGRSpec
-from sfa.rspecs.sfa_rspec import SfaRSpec
+from sfa.rspecs.rspec import RSpec
+from sfa.rspecs.version_manager import VersionManager
xslt='''<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no"/>
@staticmethod
def to_sfa_rspec(rspec):
- if isinstance(rspec, PGRSpec):
+ if not isinstance(rspec, RSpec):
+ pg_rspec = RSpec(rspec)
+ else:
pg_rspec = rspec
- else:
- pg_rspec = PGRSpec(rspec=rspec)
- sfa_rspec = SfaRSpec()
+
+ version_manager = VersionManager()
+ sfa_version = version_manager._get_version('sfa', '1')
+ sfa_rspec = RSpec(version=sfa_version)
# get network
- network_urn = pg_rspec.get_network()
+ network_urn = pg_rspec.version.get_network()
network, _ = urn_to_hrn(network_urn)
network_element = sfa_rspec.add_element('network', {'name': network, 'id': network})
# get nodes
- pg_nodes_elements = pg_rspec.get_node_elements()
- nodes_with_slivers = pg_rspec.get_nodes_with_slivers()
+ pg_nodes_elements = pg_rspec.version.get_node_elements()
+ nodes_with_slivers = pg_rspec.version.get_nodes_with_slivers()
i = 1
for pg_node_element in pg_nodes_elements:
attribs = dict(pg_node_element.attrib.items())
from sfa.rspecs.pg_rspec_converter import PGRSpecConverter
from sfa.rspecs.sfa_rspec_converter import SfaRSpecConverter
-from sfa.rspecs.sfa_rspec import sfa_rspec_version
-from sfa.rspecs.pg_rspec import pg_rspec_ad_version, pg_rspec_request_version
-from sfa.rspecs.rspec_parser import parse_rspec
-
+from sfa.rspecs.rspec import RSpec
+from sfa.rspecs.version_manager import VersionManager
class RSpecConverter:
@staticmethod
def to_sfa_rspec(in_rspec):
- rspec = parse_rspec(in_rspec)
- if rspec.version['type'] == sfa_rspec_version['type']:
+ rspec = RSpec(in_rspec)
+ version_manager = VersionManager()
+ sfa_version = version_manager._get_version('sfa', '1')
+ pg_version = version_manager._get_version('protogeni', '2')
+ if rspec.version.type.lower() == sfa_version.type.lower():
return in_rspec
- elif rspec.version['type'] == pg_rspec_ad_version['type']:
+ elif rspec.version.type.lower() == pg_version.type.lower():
return PGRSpecConverter.to_sfa_rspec(in_rspec)
else:
return in_rspec
@staticmethod
def to_pg_rspec(in_rspec):
rspec = parse_rspec(in_rspec)
- if rspec.version['type'] == pg_rspec_ad_version['type']:
+ rspec = RSpec(in_rspec)
+ version_manager = VersionManager()
+ sfa_version = version_manager._get_version('sfa', '1')
+ pg_version = version_manager._get_version('protogeni', '2')
+
+ if rspec.version.type.lower() == pg_version.type.lower():
return in_rspec
- elif rspec.version['type'] == sfa_rspec_version['type']:
+ elif rspec.version.type.lower() == sfa_version.type.lower():
return SfaRSpecConverter.to_pg_rspec(in_rspec)
else:
return in_rspec
from lxml import etree
from StringIO import StringIO
from sfa.util.xrn import *
-from sfa.rspecs.sfa_rspec import SfaRSpec
-from sfa.rspecs.pg_rspec import PGRSpec
+from sfa.rspecs.rspec import RSpec
+from sfa.rspecs.version_manager import VersionManager
class SfaRSpecConverter:
@staticmethod
def to_pg_rspec(rspec):
- if isinstance(rspec, SfaRSpec):
- sfa_rspec = rspec
+ if not isinstance(rspec, RSpec):
+ sfa_rspec = RSpec(rspec)
else:
- sfa_rspec = SfaRSpec(rspec=rspec)
- pg_rspec = PGRSpec()
-
+ sfa_rspec = rspec
+
+ version_manager = VersionManager()
+ pg_version = version_manager._get_version('protogeni', '2', 'request')
+ pg_rspec = RSpec(version=pg_version)
+
# get networks
- networks = sfa_rspec.get_networks()
+ networks = sfa_rspec.version.get_networks()
for network in networks:
# get nodes
- sfa_node_elements = sfa_rspec.get_node_elements(network=network)
+ sfa_node_elements = sfa_rspec.version.get_node_elements(network=network)
for sfa_node_element in sfa_node_elements:
# create node element
node_attrs = {}