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)
	}
}
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)
	}
}
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 ( " " , 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 ( " " , 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 ( " " , 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 ( " " , rs . dnsName , rs . recordType , strings . Join ( records , " " ) ) if p . dryRun { return nil } return p . client . UpdateRecordSet ( rs . zoneID , rs . recordSetID , opts ) } }
// apply recordset changes by inserting/updating/deleting recordsets
apply recordset changes by inserting / updating / deleting recordsets