Ticket #392: metadata.diff

File metadata.diff, 1.8 KB (added by desai, 16 years ago)
  • src/lib/Server/Plugins/Metadata.py

     
    4747        self.profiles = [] 
    4848        self.toolsets = {} 
    4949        self.categories = {} 
     50        self.bad_clients = {} 
    5051        self.clientdata = None 
    5152        self.default = None 
    5253        try: 
     
    9091        if dest == 'clients.xml': 
    9192            self.clients = {} 
    9293            self.aliases = {} 
     94            self.bad_clients = {} 
    9395            self.clientdata = xdata 
    9496            for client in xdata.findall('.//Client'): 
    9597                if 'address' in client.attrib: 
     
    145147            # check that all client groups are real and complete 
    146148            real = self.groups.keys() 
    147149            for client in self.clients.keys(): 
    148                 if self.clients[client] not in real or self.clients[client] not in self.profiles: 
     150                if self.clients[client] not in self.profiles: 
    149151                    self.logger.error("Client %s set as nonexistant or incomplete group %s" \ 
    150152                                      % (client, self.clients[client])) 
    151153                    self.logger.error("Removing client mapping for %s" % (client)) 
     154                    self.bad_clients[client] = self.clients[client] 
    152155                    del self.clients[client] 
     156            for bclient in self.bad_clients.keys(): 
     157                if self.bad_clients[bclient] in self.profiles: 
     158                    self.logger.info("Restored profile mapping for client %s" % bclient) 
     159                    self.clients[bclient] = self.bad_clients[bclient] 
     160                    del self.bad_clients[bclient] 
    153161 
    154162    def set_profile(self, client, profile): 
    155163        '''Set group parameter for provided client'''