docs: def update_hacluster_dns_ha(service, relation_data,
                              crm_ocf='ocf:maas:dns'):
      """ Configure DNS-HA resources based on provided configuration
  
      @param service: Name of the service being configured
      @param relation_data: Pointer to dictionary of relation data.
      @param crm_ocf: Corosync Open Cluster Framework resource agent to use for
                      DNS HA
      """
      # Validate the charm environment for DNS HA
      assert_charm_supports_dns_ha()
  
      settings = ['os-admin-hostname', 'os-internal-hostname',
                  'os-public-hostname', 'os-access-hostname']
  
      # Check which DNS settings are set and update dictionaries
      hostname_group = []
      for setting in settings:
          hostname = config(setting)
          if hostname is None:
              log('DNS HA: Hostname setting {} is None. Ignoring.'
                  ''.format(setting),
                  DEBUG)
              continue
          m = re.search('os-(.+?)-hostname', setting)
          if m:
              endpoint_type = m.group(1)
              # resolve_address's ADDRESS_MAP uses 'int' not 'internal'
              if endpoint_type == 'internal':
                  endpoint_type = 'int'
          else:
              msg = ('Unexpected DNS hostname setting: {}. '
                     'Cannot determine endpoint_type name'
                     ''.format(setting))
              status_set('blocked', msg)
              raise DNSHAException(msg)
  
          hostname_key = 'res_{}_{}_hostname'.format(service, endpoint_type)
          if hostname_key in hostname_group:
              log('DNS HA: Resource {}: {} already exists in '
                  'hostname group - skipping'.format(hostname_key, hostname),
                  DEBUG)
              continue
  
          hostname_group.append(hostname_key)
          relation_data['resources'][hostname_key] = crm_ocf
          relation_data['resource_params'][hostname_key] = (
              'params fqdn="{}" ip_address="{}"'
              .format(hostname, resolve_address(endpoint_type=endpoint_type,
                                                override=False)))
  
      if len(hostname_group) >= 1:
          log('DNS HA: Hostname group is set with {} as members. '
              'Informing the ha relation'.format(' '.join(hostname_group)),
              DEBUG)
          relation_data['groups'] = {
              DNSHA_GROUP_NAME.format(service=service): ' '.join(hostname_group)
          }
      else:
          msg = 'DNS HA: Hostname group has no members.'
          status_set('blocked', msg)
          raise DNSHAException(msg)