func (p *AWSSDProvider) ApplyChanges(changes *plan.Changes) error {
	// return early if there is nothing to change
	if len(changes.Create) == 0 && len(changes.Delete) == 0 && len(changes.UpdateNew) == 0 {
		log.Info("All records are already up to date")
		return nil
	}

	// convert updates to delete and create operation if applicable (updates not supported)
	creates, deletes := p.updatesToCreates(changes)
	changes.Delete = append(changes.Delete, deletes...)
	changes.Create = append(changes.Create, creates...)

	namespaces, err := p.ListNamespaces()
	if err != nil {
		return err
	}

	// Deletes must be executed first to support update case.
	// When just list of targets is updated `[1.2.3.4] -> [1.2.3.4, 1.2.3.5]` it is translated to:
	// ```
	// deletes = [1.2.3.4]
	// creates = [1.2.3.4, 1.2.3.5]
	// ```
	// then when deletes are executed after creates it will miss the `1.2.3.4` instance.
	err = p.submitDeletes(namespaces, changes.Delete)
	if err != nil {
		return err
	}

	err = p.submitCreates(namespaces, changes.Create)
	if err != nil {
		return err
	}

	return nil
}
func (p *AWSSDProvider) ApplyChanges(changes *plan.Changes) error {
	
	if len(changes.Create) == 0 && len(changes.Delete) == 0 && len(changes.UpdateNew) == 0 {
		log.Info("All records are already up to date")
		return nil
	}

	
	creates, deletes := p.updatesToCreates(changes)
	changes.Delete = append(changes.Delete, deletes...)
	changes.Create = append(changes.Create, creates...)

	namespaces, err := p.ListNamespaces()
	if err != nil {
		return err
	}

	
	
	
	
	
	
	
	err = p.submitDeletes(namespaces, changes.Delete)
	if err != nil {
		return err
	}

	err = p.submitCreates(namespaces, changes.Create)
	if err != nil {
		return err
	}

	return nil
}
func ( p * AWSSDProvider ) ApplyChanges ( changes * plan . Changes ) error { // return early if there is nothing to change if len ( changes . Create ) == 0 && len ( changes . Delete ) == 0 && len ( changes . UpdateNew ) == 0 { log . Info ( " " ) return nil } // convert updates to delete and create operation if applicable (updates not supported) creates , deletes := p . updatesToCreates ( changes ) changes . Delete = append ( changes . Delete , deletes ... ) changes . Create = append ( changes . Create , creates ... ) namespaces , err := p . ListNamespaces ( ) if err != nil { return err } // Deletes must be executed first to support update case. // When just list of targets is updated `[1.2.3.4] -> [1.2.3.4, 1.2.3.5]` it is translated to: // ``` // deletes = [1.2.3.4] // creates = [1.2.3.4, 1.2.3.5] // ``` // then when deletes are executed after creates it will miss the `1.2.3.4` instance. err = p . submitDeletes ( namespaces , changes . Delete ) if err != nil { return err } err = p . submitCreates ( namespaces , changes . Create ) if err != nil { return err } return nil }
// ApplyChanges applies Kubernetes changes in endpoints to AWS API
ApplyChanges applies Kubernetes changes in endpoints to AWS API