func (d *dynProviderState) commit(client *dynect.Client) error {
	errs := []error{}

	for _, zone := range d.zones(client) {
		// extra call if in debug mode to fetch pending changes
		if log.GetLevel() >= log.DebugLevel {
			response := ZoneChangesResponse{}
			err := client.Do("GET", fmt.Sprintf("ZoneChanges/%s/", zone), nil, &response)
			log.Debugf("Pending changes for zone %s: %+v", zone, errorOrValue(err, &response))
		}

		h, err := os.Hostname()
		if err != nil {
			h = "unknown-host"
		}
		notes := fmt.Sprintf("Change by external-dns@%s, DynAPI@%s, %s on %s",
			d.AppVersion,
			d.DynVersion,
			time.Now().Format(time.RFC3339),
			h,
		)

		zonePublish := ZonePublishRequest{
			Publish: true,
			Notes:   notes,
		}

		response := ZonePublishResponse{}

		// always retry the commit: don't waste the good work so far
		err = apiRetryLoop(func() error {
			return client.Do("PUT", fmt.Sprintf("Zone/%s/", zone), &zonePublish, &response)
		})
		log.Infof("Committing changes for zone %s: %+v", zone, errorOrValue(err, &response))
	}

	switch len(errs) {
	case 0:
		return nil
	case 1:
		return errs[0]
	default:
		return fmt.Errorf("Multiple errors committing: %+v", errs)
	}
}
func (d *dynProviderState) commit(client *dynect.Client) error {
	errs := []error{}

	for _, zone := range d.zones(client) {
		
		if log.GetLevel() >= log.DebugLevel {
			response := ZoneChangesResponse{}
			err := client.Do("GET", fmt.Sprintf("ZoneChanges/%s/", zone), nil, &response)
			log.Debugf("Pending changes for zone %s: %+v", zone, errorOrValue(err, &response))
		}

		h, err := os.Hostname()
		if err != nil {
			h = "unknown-host"
		}
		notes := fmt.Sprintf("Change by external-dns@%s, DynAPI@%s, %s on %s",
			d.AppVersion,
			d.DynVersion,
			time.Now().Format(time.RFC3339),
			h,
		)

		zonePublish := ZonePublishRequest{
			Publish: true,
			Notes:   notes,
		}

		response := ZonePublishResponse{}

		
		err = apiRetryLoop(func() error {
			return client.Do("PUT", fmt.Sprintf("Zone/%s/", zone), &zonePublish, &response)
		})
		log.Infof("Committing changes for zone %s: %+v", zone, errorOrValue(err, &response))
	}

	switch len(errs) {
	case 0:
		return nil
	case 1:
		return errs[0]
	default:
		return fmt.Errorf("Multiple errors committing: %+v", errs)
	}
}
func ( d * dynProviderState ) commit ( client * dynect . Client ) error { errs := [ ] error { } for _ , zone := range d . zones ( client ) { // extra call if in debug mode to fetch pending changes if log . GetLevel ( ) >= log . DebugLevel { response := ZoneChangesResponse { } err := client . Do ( " " , fmt . Sprintf ( " " , zone ) , nil , & response ) log . Debugf ( " " , zone , errorOrValue ( err , & response ) ) } h , err := os . Hostname ( ) if err != nil { h = " " } notes := fmt . Sprintf ( " " , d . AppVersion , d . DynVersion , time . Now ( ) . Format ( time . RFC3339 ) , h , ) zonePublish := ZonePublishRequest { Publish : true , Notes : notes , } response := ZonePublishResponse { } // always retry the commit: don't waste the good work so far err = apiRetryLoop ( func ( ) error { return client . Do ( " " , fmt . Sprintf ( " " , zone ) , & zonePublish , & response ) } ) log . Infof ( " " , zone , errorOrValue ( err , & response ) ) } switch len ( errs ) { case 0 : return nil case 1 : return errs [ 0 ] default : return fmt . Errorf ( " " , errs ) } }
// commit commits all pending changes. It will always attempt to commit, if there are no
commit commits all pending changes . It will always attempt to commit if there are no