the big cleanup: deprecate federica driver
[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
6 def hrn_to_os_slicename(hrn):
7     return OSXrn(xrn=hrn, type='slice').get_slicename()
8
9
10 def hrn_to_os_tenant_name(hrn):
11     return OSXrn(xrn=hrn, type='slice').get_tenant_name()
12
13
14 def cleanup_name(name):
15     return name.replace(".", "_").replace("+", "_")
16
17
18 class OSXrn(Xrn):
19
20     def __init__(self, name=None, auth=None, **kwds):
21
22         config = Config()
23         self.id = id
24         if name is not None:
25             Xrn.__init__(self, **kwds)
26             if 'type' in kwds:
27                 self.type = kwds['type']
28             if auth is not None:
29                 self.hrn = '.'.join([auth, cleanup_name(name)])
30             else:
31                 self.hrn = name.replace('_', '.')
32             self.hrn_to_urn()
33         else:
34             Xrn.__init__(self, **kwds)
35
36         self.name = self.get_name()
37
38     def get_name(self):
39         self._normalize()
40         leaf = self.leaf
41         sliver_id_parts = leaf.split(':')
42         name = sliver_id_parts[0]
43         name = re.sub('[^a-zA-Z0-9_]', '', name)
44         return name
45
46     def get_slicename(self):
47         self._normalize()
48         slicename = self.hrn
49         slicename = slicename.split(':')[0]
50         slicename = re.sub('[\.]', '_', slicename)
51         return slicename
52
53     def get_tenant_name(self):
54         self._normalize()
55         tenant_name = self.hrn.replace('\.', '')
56         return tenant_name