parameters: (self, rrset)
docstring: Add the rrs from the given rrset to the internal diff.
             There is handling for a number of special cases mentioned
             in RFC2136;
             - If the addition is a CNAME, but existing data at its
               name is not, the addition is ignored, and vice versa.
             - If it is a CNAME, and existing data is too, it is
               replaced (existing data is deleted)
             An additional restriction is that SOA data is ignored as
             well (it is handled separately by the __do_update method).
  
             Note that in the (near) future, this method may have
             addition special-cases processing.
docstring_summary: Add the rrs from the given rrset to the internal diff.
             There is handling for a number of special cases mentioned
             in RFC2136;
             - If the addition is a CNAME, but existing data at its
               name is not, the addition is ignored, and vice versa.
             - If it is a CNAME, and existing data is too, it is
               replaced (existing data is deleted)
             An additional restriction is that SOA data is ignored as
             well (it is handled separately by the __do_update method).
docstring_tokens: Add the rrs from the given rrset to the internal diff . There is handling for a number of special cases mentioned in RFC2136 ; - If the addition is a CNAME but existing data at its name is not the addition is ignored and vice versa . - If it is a CNAME and existing data is too it is replaced ( existing data is deleted ) An additional restriction is that SOA data is ignored as well ( it is handled separately by the __do_update method ) .
function: def __do_update_add_rrs_to_rrset(self, rrset):
          '''Add the rrs from the given rrset to the internal diff.
             There is handling for a number of special cases mentioned
             in RFC2136;
             - If the addition is a CNAME, but existing data at its
               name is not, the addition is ignored, and vice versa.
             - If it is a CNAME, and existing data is too, it is
               replaced (existing data is deleted)
             An additional restriction is that SOA data is ignored as
             well (it is handled separately by the __do_update method).
  
             Note that in the (near) future, this method may have
             addition special-cases processing.
          '''
          # For a number of cases, we may need to remove data in the zone
          # (note; SOA is handled separately by __do_update, so that one
          # is explicitly ignored here)
          if rrset.get_type() == RRType.SOA:
              return
          result, orig_rrset, _ = self.__diff.find(rrset.get_name(),
                                                   rrset.get_type())
          if result == ZoneFinder.CNAME:
              # Ignore non-cname rrs that try to update CNAME records
              # (if rrset itself is a CNAME, the finder result would be
              # SUCCESS, see next case)
              return
          elif result == ZoneFinder.SUCCESS:
              # if update is cname, and zone rr is not, ignore
              if rrset.get_type() == RRType.CNAME:
                  # Remove original CNAME record (the new one
                  # is added below)
                  self.__diff.delete_data(orig_rrset)
              # We do not have WKS support at this time, but if there
              # are special Update equality rules such as for WKS, and
              # we do have support for the type, this is where the check
              # (and potential delete) would go.
          elif result == ZoneFinder.NXRRSET:
              # There is data present, but not for this type.
              # If this type is CNAME, ignore the update
              if rrset.get_type() == RRType.CNAME:
                  return
          for rr in foreach_rr(rrset):
              self.__do_update_add_single_rr(rr, orig_rrset)
function_tokens: def __do_update_add_rrs_to_rrset ( self , rrset ) : # For a number of cases, we may need to remove data in the zone # (note; SOA is handled separately by __do_update, so that one # is explicitly ignored here) if rrset . get_type ( ) == RRType . SOA : return result , orig_rrset , _ = self . __diff . find ( rrset . get_name ( ) , rrset . get_type ( ) ) if result == ZoneFinder . CNAME : # Ignore non-cname rrs that try to update CNAME records # (if rrset itself is a CNAME, the finder result would be # SUCCESS, see next case) return elif result == ZoneFinder . SUCCESS : # if update is cname, and zone rr is not, ignore if rrset . get_type ( ) == RRType . CNAME : # Remove original CNAME record (the new one # is added below) self . __diff . delete_data ( orig_rrset ) # We do not have WKS support at this time, but if there # are special Update equality rules such as for WKS, and # we do have support for the type, this is where the check # (and potential delete) would go. elif result == ZoneFinder . NXRRSET : # There is data present, but not for this type. # If this type is CNAME, ignore the update if rrset . get_type ( ) == RRType . CNAME : return for rr in foreach_rr ( rrset ) : self . __do_update_add_single_rr ( rr , orig_rrset )