Merge branch 'master' of ssh://git.planet-lab.org/git/sfa
[sfa.git] / sfa / rspecs / rspec_version.py
1 #!/usr/bin/python
2 from sfa.util.sfalogging import logger
3
4 class BaseVersion:
5     type = None
6     content_type = None
7     version = None
8     schema = None
9     naemspace = None
10     extensions = {}
11     elements = []
12     enabled = False
13
14     def to_dict(self):
15         return {
16             'type': self.type,
17             'version': self.version,
18             'schema': self.schema,
19             'namespace': self.namespace,
20             'extensions': self.extensions
21         }
22
23     def to_string(self):
24         return "%s %s" % (self.type, self.version)
25     
26
27 class RSpecVersion(dict):
28
29     fields = {'type': None,
30               'version': None,
31               'schema': None,
32               'namespace': None,
33               'extensions': []
34         }
35     def __init__(self, version={}):
36         
37         dict.__init__(self, self.fields)
38
39         if not version:
40             from sfa.rspecs.sfa_rspec import sfa_rspec_version
41             self.update(sfa_rspec_version)          
42         elif isinstance(version, dict):
43             self.update(version)
44         elif isinstance(version, basestring):
45             version_parts = version.split(' ')
46             num_parts = len(version_parts)
47             self['type'] = version_parts[0]
48             if num_parts > 1:
49                 self['version'] = version_parts[1]
50         else:
51             logger.info("Unable to parse rspec version, using default")
52
53     def get_version_name(self):
54         return "%s %s" % (str(self['type']), str(self['version']))
55
56 if __name__ == '__main__':
57
58     from sfa.rspecs.pl_rspec_version import ad_rspec_versions
59     for version in [RSpecVersion(), 
60                     RSpecVersion("SFA"), 
61                     RSpecVersion("SFA 1"),
62                     RSpecVersion(ad_rspec_versions[0])]: 
63         print version.get_version_name() + ": " + str(version)
64