def virtual_server_dependencies(self): if self.have.virtual_server_dependencies is None: return self.want.virtual_server_dependencies if self.want.virtual_server_dependencies is None and self.have.virtual_server_dependencies is None: return None if self.want.virtual_server_dependencies is None: return None result = compare_complex_list(self.want.virtual_server_dependencies, self.have.virtual_server_dependencies) return result
def interfaces(self): if self.want.interfaces is None: return None if self.have.interfaces is None and self.want.interfaces in ['', 'none']: return None if self.have.interfaces is not None and self.want.interfaces in ['', 'none']: return [] if self.have.interfaces is None: return dict( interfaces=self.want.interfaces ) return compare_complex_list(self.want.interfaces, self.have.interfaces)
def records(self): # External data groups are compared by their checksum, not their records. This # is because the BIG-IP does not store the actual records in the API. It instead # stores the checksum of the file. External DGs have the possibility of being huge # and we would never want to do a comparison of such huge files. # # Therefore, comparison is no-op if the DG being worked with is an external DG. if self.want.internal is False: return None if self.have.records is None and self.want.records == []: return None if self.have.records is None: return self.want.records result = compare_complex_list(self.want.records, self.have.records) return result
def rules(self): if self.want.rules is None: return None if self.have.rules is None and self.want.rules == '': return None if self.have.rules is not None and self.want.rules == '': return [] if self.have.rules is None: return self.want.rules want = [tuple(x.pop('destination_ports')) for x in self.want.rules if 'destination_ports' in x] have = [tuple(x.pop('destination_ports')) for x in self.have.rules if 'destination_ports' in x] if set(want) != set(have): return self.want.rules if compare_complex_list(self.want.rules, self.have.rules): return self.want.rules
def hw_url_include(self): if self.want.hw_url_include is None: return None if self.have.hw_url_include is None and self.want.hw_url_include == []: return None if self.have.hw_url_include is None: return self.want.hw_url_include wants = self.want.hw_url_include haves = list() # First we remove extra keys in have for the same elements for want in wants: for have in self.have.hw_url_include: if want['url'] == have['url']: entry = self._filter_have(want, have) haves.append(entry) # Next we do compare the lists as normal result = compare_complex_list(wants, haves) return result
def ipv6_address_space(self): result = compare_complex_list(self.want.ipv6_address_space, self.have.ipv6_address_space) return result
def excluded_ipv6_adresses(self): result = compare_complex_list(self.want.excluded_ipv6_adresses, self.have.excluded_ipv6_adresses) return result