docs: def zone_create_or_update(name, resource_group, **kwargs):
      '''
      .. versionadded:: Fluorine
  
      Creates or updates a DNS zone. Does not modify DNS records within the zone.
  
      :param name: The name of the DNS zone to create (without a terminating dot).
  
      :param resource_group: The name of the resource group.
  
      CLI Example:
  
      .. code-block:: bash
  
          salt-call azurearm_dns.zone_create_or_update myzone testgroup
  
      '''
      # DNS zones are global objects
      kwargs['location'] = 'global'
  
      dnsconn = __utils__['azurearm.get_client']('dns', **kwargs)
  
      # Convert list of ID strings to list of dictionaries with id key.
      if isinstance(kwargs.get('registration_virtual_networks'), list):
          kwargs['registration_virtual_networks'] = [{'id': vnet} for vnet in kwargs['registration_virtual_networks']]
  
      if isinstance(kwargs.get('resolution_virtual_networks'), list):
          kwargs['resolution_virtual_networks'] = [{'id': vnet} for vnet in kwargs['resolution_virtual_networks']]
  
      try:
          zone_model = __utils__['azurearm.create_object_model']('dns', 'Zone', **kwargs)
      except TypeError as exc:
          result = {'error': 'The object model could not be built. ({0})'.format(str(exc))}
          return result
  
      try:
          zone = dnsconn.zones.create_or_update(
              zone_name=name,
              resource_group_name=resource_group,
              parameters=zone_model,
              if_match=kwargs.get('if_match'),
              if_none_match=kwargs.get('if_none_match')
          )
          result = zone.as_dict()
      except CloudError as exc:
          __utils__['azurearm.log_cloud_error']('dns', str(exc), **kwargs)
          result = {'error': str(exc)}
      except SerializationError as exc:
          result = {'error': 'The object model could not be parsed. ({0})'.format(str(exc))}
  
      return result