6a3944c99a3cf65ffdc23a1c731ed0d9af12ce15
[sfa.git] / sfa / openstack / osxrn.py
1 import re
2 from sfa.util.xrn import Xrn
3 from sfa.util.config import Config
4
5 def hrn_to_os_slicename(hrn):
6     return OSXrn(xrn=hrn, type='slice').get_slicename()
7
8
9 def hrn_to_os_tenant_name(hrn):
10     return OSXrn(xrn=hrn, type='slice').get_tenant_name()
11
12 def cleanup_name(name):
13     return name.replace(".", "_").replace("+", "_")                
14
15 class OSXrn(Xrn):
16
17     def __init__(self, name=None, auth=None, **kwds):
18         
19         config = Config()
20         self.id = id
21         if name is not None:
22             Xrn.__init__(self, **kwds)
23             if 'type' in kwds:
24                 self.type = kwds['type']
25             if auth is not None:
26                 self.hrn='.'.join([auth, cleanup_name(name)]) 
27             else:
28                 self.hrn = name.replace('_', '.')
29             self.hrn_to_urn()
30         else:
31             Xrn.__init__(self, **kwds)   
32          
33         self.name = self.get_name() 
34     
35     def get_name(self):
36         self._normalize()
37         leaf = self.leaf
38         sliver_id_parts = leaf.split(':')
39         name = sliver_id_parts[0]
40         name = re.sub('[^a-zA-Z0-9_]', '', name)
41         return name
42
43
44     def get_slicename(self):
45         self._normalize()
46         slicename = self.hrn
47         slicename = slicename.split(':')[0]
48         slicename = re.sub('[\.]', '_', slicename)
49         return slicename
50
51     def get_tenant_name(self):
52         self._normalize()
53         tenant_name = self.hrn.replace('\.', '')
54         return tenant_name
55