MCPcopy Index your code
hub / github.com/docker/cli / updateDNSConfig

Function updateDNSConfig

cli/command/service/update.go:1001–1061  ·  view source on GitHub ↗
(flags *pflag.FlagSet, config **swarm.DNSConfig)

Source from the content-addressed store, hash-verified

999}
1000
1001func updateDNSConfig(flags *pflag.FlagSet, config **swarm.DNSConfig) error {
1002 newConfig := &swarm.DNSConfig{}
1003
1004 nameservers := (*config).Nameservers
1005 if flags.Changed(flagDNSAdd) {
1006 values := flags.Lookup(flagDNSAdd).Value.(*opts.ListOpts).GetSlice()
1007 var ips []netip.Addr
1008 for _, ip := range values {
1009 a, err := netip.ParseAddr(ip)
1010 if err != nil {
1011 return err
1012 }
1013 ips = append(ips, a)
1014 }
1015 nameservers = append(nameservers, ips...)
1016 }
1017 nameservers = removeDuplicates(nameservers)
1018 toRemove := buildToRemoveSet(flags, flagDNSRemove)
1019 for _, nameserver := range nameservers {
1020 if _, exists := toRemove[nameserver.String()]; !exists {
1021 newConfig.Nameservers = append(newConfig.Nameservers, nameserver)
1022 }
1023 }
1024 // Sort so that result is predictable.
1025 slices.SortFunc(newConfig.Nameservers, func(a, b netip.Addr) int {
1026 return a.Compare(b)
1027 })
1028
1029 search := (*config).Search
1030 if flags.Changed(flagDNSSearchAdd) {
1031 values := flags.Lookup(flagDNSSearchAdd).Value.(*opts.ListOpts).GetSlice()
1032 search = append(search, values...)
1033 }
1034 search = slices.Compact(search)
1035 toRemove = buildToRemoveSet(flags, flagDNSSearchRemove)
1036 for _, entry := range search {
1037 if _, exists := toRemove[entry]; !exists {
1038 newConfig.Search = append(newConfig.Search, entry)
1039 }
1040 }
1041 // Sort so that result is predictable.
1042 sort.Strings(newConfig.Search)
1043
1044 options := (*config).Options
1045 if flags.Changed(flagDNSOptionAdd) {
1046 values := flags.Lookup(flagDNSOptionAdd).Value.(*opts.ListOpts).GetSlice()
1047 options = append(options, values...)
1048 }
1049 options = slices.Compact(options)
1050 toRemove = buildToRemoveSet(flags, flagDNSOptionRemove)
1051 for _, option := range options {
1052 if _, exists := toRemove[option]; !exists {
1053 newConfig.Options = append(newConfig.Options, option)
1054 }
1055 }
1056 // Sort so that result is predictable.
1057 sort.Strings(newConfig.Options)
1058

Callers 2

updateServiceFunction · 0.85
TestUpdateDNSConfigFunction · 0.85

Calls 4

removeDuplicatesFunction · 0.85
buildToRemoveSetFunction · 0.85
GetSliceMethod · 0.80
StringMethod · 0.65

Tested by 1

TestUpdateDNSConfigFunction · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…