github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/nodeagent/firewall/centos/sources.go (about)

     1  package centos
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/caos/orbos/internal/operator/common"
     7  	"github.com/caos/orbos/mntr"
     8  )
     9  
    10  func getAddAndRemoveSources(
    11  	monitor mntr.Monitor,
    12  	zoneName string,
    13  	current *common.ZoneDesc,
    14  	desired common.Firewall,
    15  ) (
    16  	[]string,
    17  	[]string,
    18  ) {
    19  
    20  	addSources := make([]string, 0)
    21  	removeSources := make([]string, 0)
    22  	zone := desired.Zones[zoneName]
    23  
    24  	if zone.Sources != nil && len(zone.Sources) > 0 {
    25  		for _, source := range zone.Sources {
    26  			foundSource := false
    27  			if current.Sources != nil && len(current.Sources) > 0 {
    28  				for _, currentSource := range current.Sources {
    29  					if currentSource == source {
    30  						foundSource = true
    31  					}
    32  				}
    33  			}
    34  			if !foundSource {
    35  				addSources = append(addSources, fmt.Sprintf("--add-source=%s", source))
    36  			}
    37  		}
    38  	}
    39  	if current.Sources != nil && len(current.Sources) > 0 {
    40  		for _, currentSource := range current.Sources {
    41  			foundSource := false
    42  			if zone.Sources != nil && len(zone.Sources) > 0 {
    43  				for _, source := range zone.Sources {
    44  					if source == currentSource {
    45  						foundSource = true
    46  					}
    47  				}
    48  			}
    49  			if !foundSource {
    50  				removeSources = append(removeSources, fmt.Sprintf("--remove-source=%s", currentSource))
    51  			}
    52  		}
    53  	}
    54  
    55  	return addSources, removeSources
    56  }