#!/usr/bin/python
-from sfa.util.sfalogging import sfa_logger
+from sfa.util.sfalogging import _SfaLogger
+class RSpecVersion(dict):
-DEFAULT_FORMAT='sfa'
-DEFAULT_VERSION_NUMBER=1
-class RSpecVersion:
+ fields = {'type': None,
+ 'version': None,
+ 'schema': None,
+ 'namespace': None,
+ 'extensions': []
+ }
+ def __init__(self, version={}):
+
+ self.logger = _SfaLogger('/var/log/sfa.log')
+ dict.__init__(self, self.fields)
- format = None
- version = None
- schema = None
- namespace = None
- extensions = []
+ if not version:
+ from sfa.rspecs.sfa_rspec import sfa_rspec_version
+ self.update(sfa_rspec_version)
+ elif isinstance(version, dict):
+ self.update(version)
+ elif isinstance(version, basestring):
+ version_parts = version.split(' ')
+ num_parts = len(version_parts)
+ self['type'] = version_parts[0]
+ if num_parts > 1:
+ self['version'] = version_parts[1]
+ else:
+ logger.info("Unable to parse rspec version, using default")
- def __init__(self, version_string):
- self.logger = sfa_logger()
- self.parse_version_string(version_string)
+ def get_version_name(self):
+ return "%s %s" % (str(self['type']), str(self['version']))
- def parse_version_string(self, version_string):
- # version_raw is currently a string but will
- # eventually be a struct.
- try:
- format_split = version_string.split(' ')
- format, version = format_split[0].lower(), format_split[1]
- except:
- self.logger.info("RSpecVersion: invalid rspec version string: %s , using default" \
- % version_string)
- # invalid format. Just continue
- format, version = DEFAULT_FORMAT, DEFAULT_VERSION_NUMBER
+if __name__ == '__main__':
- self.format = format
- self.version = version
-
+ from sfa.rspecs.pl_rspec_version import ad_rspec_versions
+ for version in [RSpecVersion(),
+ RSpecVersion("SFA"),
+ RSpecVersion("SFA 1"),
+ RSpecVersion(ad_rspec_versions[0])]:
+ print version.get_version_name() + ": " + str(version)
- def parse_version_struct(self, version_struct):
- try:
- pass
- except:
- format, version = DEFAULT_FORMAT, DEFAULT_VERSION_NUMBER