Fixed bug when listing nodes in a slice.
authorSandrine Avakian <sandrine.avakian@inria.fr>
Wed, 29 Aug 2012 13:50:03 +0000 (15:50 +0200)
committerSandrine Avakian <sandrine.avakian@inria.fr>
Wed, 29 Aug 2012 13:50:03 +0000 (15:50 +0200)
sfa/rspecs/elements/versions/slabv1Node.py
sfa/senslab/LDAPapi.py
sfa/senslab/slabaggregate.py
sfa/senslab/slabdriver.py

index e1c9536..ce5a215 100644 (file)
@@ -31,7 +31,7 @@ class Slabv1Node:
         should be used after add_nodes, which creates the network item.
         
         """
-        
+        logger.debug(" add_connection_information xml %s" %(xml))
         #Get network item in the xml
         network_elems = xml.xpath('//network')  
         if len(network_elems) > 0:
index ac0a424..f0ecb58 100644 (file)
@@ -328,8 +328,10 @@ class LDAPapi :
         attrs['gidNumber'] = self.ldapUserGidNumber
         attrs['uidNumber'] = self.find_max_uidNumber()
         attrs['mail'] = record['mail'].lower()
-        
-        attrs['sshPublicKey'] = self.get_ssh_pkey(record) 
+        try:
+            attrs['sshPublicKey'] = record['pkey']
+        except KeyError:
+            attrs['sshPublicKey'] = self.get_ssh_pkey(record) 
         
 
         #Password is automatically generated because SFA user don't go 
@@ -357,7 +359,7 @@ class LDAPapi :
 
 
 
-    def LdapAddUser(self, record = None) :
+    def LdapAddUser(self, record) :
         """Add SFA user to LDAP if it is not in LDAP  yet. """
         
         user_ldap_attrs = self.make_ldap_attributes_from_record(record)
index 0a42bf5..7298a33 100644 (file)
@@ -78,14 +78,16 @@ class SlabAggregate:
         for sfa_slice in slices:
             try:
                     
-                for node_id in sfa_slice['node_ids']:
+                for node in sfa_slice['node_ids']:
                     #node_id = self.driver.root_auth + '.' + node_id
                     sliver = Sliver({'sliver_id': urn_to_sliver_id(slice_urn, \
-                                    sfa_slice['record_id_slice'], node_id),
+                                    sfa_slice['record_id_slice'], node['hostname']),
                                     'name': sfa_slice['slice_hrn'],
                                     'type': 'slab-node', 
                                     'tags': []})
-                    slivers[node_id] = sliver
+                    logger.log_exc("SLABAGGREGATE \t \
+                                        get_slice_and_slivers node_id %s "%(node))
+                    slivers[node['hostname']] = sliver
             except KeyError:
                 logger.log_exc("SLABAGGREGATE \t \
                                         get_slice_and_slivers KeyError ")
@@ -173,8 +175,8 @@ class SlabAggregate:
         slice_nodes_list = []
         if slices:
             for one_slice in slices:
-                for node_id in one_slice['node_ids']:
-                    slice_nodes_list.append(node_id)
+                for node in one_slice['node_ids']:
+                    slice_nodes_list.append(node['hostname'])
                    
         reserved_nodes = self.driver.GetNodesCurrentlyInUse()
         logger.debug("SLABAGGREGATE api get_rspec slice_nodes_list  %s "\
@@ -349,6 +351,8 @@ class SlabAggregate:
         if lease_option in ['all', 'resources']:
         #if not options.get('list_leases') or options.get('list_leases') and options['list_leases'] != 'leases':
             nodes = self.get_nodes(slices, slivers) 
+            logger.debug("SlabAggregate \tget_rspec **** \
+                        nodes %s \r\n" %(nodes))
             #In case creating a job,  slice_xrn is not set to None
             rspec.version.add_nodes(nodes)
             if slice_xrn :
index b02ad9d..f009aa4 100644 (file)
@@ -377,7 +377,7 @@ class SlabDriver(Driver):
                 if key not in acceptable_fields:
                     slab_record.pop(key) 
             logger.debug("SLABDRIVER.PY register")
-            slices = self.GetSlices(slice_filter =slab_record['hrn'], \
+            slices = self.GetSlices(slice_filter=slab_record['hrn'], \
                                             slice_filter_type = 'slice_hrn')
             if not slices:
                 pointer = self.AddSlice(slab_record)
@@ -388,6 +388,9 @@ class SlabDriver(Driver):
             persons = self.GetPersons([sfa_record])
             #persons = self.GetPersons([sfa_record['hrn']])
             if not persons:
+                sfa_record['enabled'] = False
+                #For Senslab LDAP, if the user is a new one, disable the 
+                #account so that admins have to acknowledge the user first.
                 pointer = self.AddPerson(dict(sfa_record))
                 #add in LDAP 
             else:
@@ -399,19 +402,11 @@ class SlabDriver(Driver):
                                     #{'enabled': sfa_record['enabled']})
                 
             #TODO register Change this AddPersonToSite stuff 05/07/2012 SA   
-            # add this person to the site only if 
-            # she is being added for the first
-            # time by sfa and doesnt already exist in plc
-            if not persons or not persons[0]['site_ids']:
-                login_base = get_leaf(sfa_record['authority'])
-                self.AddPersonToSite(pointer, login_base)
+            #No site in senslab 28/08/12 SA
+           
     
             # What roles should this user have?
-            #TODO : DElete this AddRoleToPerson 04/07/2012 SA
-            #Function prototype is :
-            #AddRoleToPerson(self, auth, role_id_or_name, person_id_or_email)
-            #what's the pointer doing here?
-            self.AddRoleToPerson('user', pointer)
+            #No user roles in Slab/SFA 28/08/12 SA: roles are handled in LDAP
             # Add the user's key
             if pub_key:
                 self.AddPersonKey(pointer, {'key_type' : 'ssh', \
@@ -1563,8 +1558,9 @@ class SlabDriver(Driver):
         return
     
     #TODO AddPerson 04/07/2012 SA
-    def AddPerson(self, auth, person_fields=None):
-        """Adds a new account. Any fields specified in person_fields are used, 
+    #def AddPerson(self, auth,  person_fields=None): 
+    def AddPerson(self, record):#TODO fixing 28/08//2012 SA
+        """Adds a new account. Any fields specified in records are used, 
         otherwise defaults are used.
         Accounts are disabled by default. To enable an account, 
         use UpdatePerson().
@@ -1572,7 +1568,8 @@ class SlabDriver(Driver):
         FROM PLC API DOC
         
         """
-        logger.warning("SLABDRIVER AddPerson EMPTY - DO NOTHING \r\n ")
+        ret = self.ldap.LdapAddUser(record)
+        logger.warning("SLABDRIVER AddPerson return code %s \r\n ", ret)
         return
     
     #TODO AddPersonToSite 04/07/2012 SA