code: func (p designateProvider) upsertRecordSet(rs *recordSet, managedZones map[string]string) error {
  	if rs.zoneID == "" {
  		var err error
  		rs.zoneID, err = p.getHostZoneID(rs.dnsName, managedZones)
  		if err != nil {
  			return err
  		}
  		if rs.zoneID == "" {
  			log.Debugf("Skipping record %s because no hosted zone matching record DNS Name was detected ", rs.dnsName)
  			return nil
  		}
  	}
  	var records []string
  	for rec, v := range rs.names {
  		if v {
  			records = append(records, rec)
  		}
  	}
  	if rs.recordSetID == "" && records == nil {
  		return nil
  	}
  	if rs.recordSetID == "" {
  		opts := recordsets.CreateOpts{
  			Name:    rs.dnsName,
  			Type:    rs.recordType,
  			Records: records,
  		}
  		log.Infof("Creating records: %s/%s: %s", rs.dnsName, rs.recordType, strings.Join(records, ","))
  		if p.dryRun {
  			return nil
  		}
  		_, err := p.client.CreateRecordSet(rs.zoneID, opts)
  		return err
  	} else if len(records) == 0 {
  		log.Infof("Deleting records for %s/%s", rs.dnsName, rs.recordType)
  		if p.dryRun {
  			return nil
  		}
  		return p.client.DeleteRecordSet(rs.zoneID, rs.recordSetID)
  	} else {
  		opts := recordsets.UpdateOpts{
  			Records: records,
  		}
  		log.Infof("Updating records: %s/%s: %s", rs.dnsName, rs.recordType, strings.Join(records, ","))
  		if p.dryRun {
  			return nil
  		}
  		return p.client.UpdateRecordSet(rs.zoneID, rs.recordSetID, opts)
  	}
  }
docs: // apply recordset changes by inserting/updating/deleting recordsets