1 from types import StringTypes
3 from types import StringTypes
10 from sfa.plc.sfaImport import sfaImport
11 from sfa.plc.api import GeniAPI
12 from sfa.util.debug import log
14 self.sfa = sfaImport()
16 self.plcapi = geniapi.plshell
17 self.auth = geniapi.plauth
19 traceback.print_exc(file = self.log)
21 if self.gimport.level1_auth:
22 self.authority = self.gimport.level1_auth
24 self.authority = self.gimport.root_auth
27 def get_login_base(site_id):
28 sites = self.plcapi.GetSites(self.auth, [site_id], ['login_base'])
31 def get_login_bases(self, object):
36 if object.has_key('site_id') and object['site_id']:
37 site_ids.append(object['site_id'])
38 elif object.has_key('site_ids') and object['site_ids']:
39 site_ids.extend(object['site_ids'])
44 for site_id in site_ids:
45 login_bases.append(self.get_login_base(site_id))
49 def update_record(self, object, type, login_bases = None):
51 # determine this objects site and login_base
53 login_bases = self.get_login_bases(object)
55 if isinstance(login_bases, StringTypes):
56 login_bases = [login_bases]
58 for login_base in login_bases:
59 login_base = self.sfa.cleanup_string(login_base)
60 parent_hrn = self.authority + "." + login_base
61 if type in ['person']:
62 self.sfa.import_person(parent_hrn, object)
63 elif type in ['slice']:
64 self.sfa.import_slice(parent_hrn, object)
65 elif type in ['node']:
66 self.sfa.import_node(parent_hrn, object)
67 elif type in ['site']:
68 self.sfa.import_site(self.authority, object)
71 keys = ['name', 'hostname', 'email', 'login_base']
73 if object.has_key(key):
75 traceback.print_exc(file = self.log)
76 print >> self.log, "Error importing %s record for %s into geni db: %s" % \
79 def delete_record(self, object, type, login_base = None):
81 login_bases = get_login_bases(object)
83 for login_base in login_bases:
84 login_base = self.sfa.cleanup_string(login_base)
85 parent_hrn = self.authority + "." + login_base
86 self.sfa.delete_record(parent_hrn, object, type)
88 def update_site(self, site, login_base = None):
89 self.update_record(site, 'site', login_base)
91 def update_site(self, site, login_base = None):
92 self.update_record(site, 'site', login_base)
94 def update_node(self, node, login_base = None):
95 self.update_record(node, 'node', login_base)
97 def update_slice(self, slice, login_base = None):
98 self.update_record(slice, 'slice', login_base)
100 def update_person(self, person, login_base = None):
101 self.update_record(person, 'person', login_base)
103 def delete_site(self, site, login_base = None):
104 site_name = site['login_base']
105 hrn = parent_hrn + site_name
106 self.delete_record(site, 'site', login_base)
108 def delete_node(self, node, login_base = None):
109 self.delete_record(node, 'node', login_base)
111 def delete_slice(self, slice, login_base = None):
112 self.delete_record(slice, 'slice', login_base)
114 def delete_person(self, person, login_base = None):
115 self.delete_record(person, 'person', login_base)