From c15445524128c416bbe6e4b49e1793f07d82e55f Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Fri, 20 May 2011 09:53:41 -0400 Subject: [PATCH] fix pg rspec version and types --- sfa/rspecs/pg_rspec.py | 41 ++++++++++++++++++++++++++++++++++++++--- sfa/rspecs/rspec.py | 7 ++++--- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/sfa/rspecs/pg_rspec.py b/sfa/rspecs/pg_rspec.py index dac22848..c0a8c064 100755 --- a/sfa/rspecs/pg_rspec.py +++ b/sfa/rspecs/pg_rspec.py @@ -7,7 +7,7 @@ from sfa.util.plxrn import hostname_to_urn from sfa.util.config import Config from sfa.rspecs.rspec_version import RSpecVersion -_version = {'type': 'ProtoGENI', +_ad_version = {'type': 'ProtoGENI', 'version': '2', 'schema': 'http://www.protogeni.net/resources/rspec/2/ad.xsd', 'namespace': 'http://www.protogeni.net/resources/rspec/2', @@ -16,15 +16,50 @@ _version = {'type': 'ProtoGENI', 'http://www.protogeni.net/resources/rspec/ext/other-ext/3' ] } -pg_rspec_version = RSpecVersion(_version) + +_request_version = {'type': 'ProtoGENI', + 'version': '2', + 'schema': 'http://www.protogeni.net/resources/rspec/2/request.xsd', + 'namespace': 'http://www.protogeni.net/resources/rspec/2', + 'extensions': [ + 'http://www.protogeni.net/resources/rspec/ext/gre-tunnel/1', + 'http://www.protogeni.net/resources/rspec/ext/other-ext/3' + ] +} +pg_rspec_ad_version = RSpecVersion(_ad_version) +pg_rspec_request_version = RSpecVersion(_request_version) class PGRSpec(RSpec): xml = None header = '\n' - template = """""" + template = """""" version = pg_rspec_version namespaces = {'rspecv2': version['namespace']} + def __init__(self, rspec="", namespaces={}, type=None): + self.type = type + if not type or type == 'advertisement': + version = pg_rspec_ad_version + else: + version = pg_rspec_request_version + + if rspec: + self.parse_rspec(rspec, namespaces) + else: + self.create() + + def __get_template(self): + if self.type = 'adversisement': + rspec_type = 'ad' + else: + rspec_type = 'request' + return self.tempate % locals() + + def create(): + RSpec.create(self) + if self.type: + self.xml.set('type', self.type) + def get_network(self): network = None nodes = self.xml.xpath('//rspecv2:node[@component_manager_uuid][1]', namespaces=self.namespaces) diff --git a/sfa/rspecs/rspec.py b/sfa/rspecs/rspec.py index 2a331c1d..7c10a663 100755 --- a/sfa/rspecs/rspec.py +++ b/sfa/rspecs/rspec.py @@ -23,6 +23,9 @@ class RSpec: else: self.create() + def __get_template(self): + return self.template + def create(self): """ Create root element @@ -32,11 +35,9 @@ class RSpec: now = datetime.utcnow() generated_ts = now.strftime(date_format) expires_ts = (now + timedelta(hours=1)).strftime(date_format) - self.parse_rspec(self.template, self.namespaces) + self.parse_rspec(self.__get_template, self.namespaces) self.xml.set('valid_until', expires_ts) self.xml.set('generated', generated_ts) - if self.type: - self.xml.set('type', self.type) def parse_rspec(self, rspec, namespaces={}): """ -- 2.43.0